Unable to import a metadata sharing package

Application Name: Openmrs Version Number: 1.9.11

Question: After checking if I have same the version of war file and modules on both servers (Server used to export and server used to import), I am Importing a metadata sharing package of an HTMform and get a LazyInitializationException:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167) org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215) org.hibernate.Hibernate.getClass(Hibernate.java:449) org.openmrs.module.metadatasharing.reflection.ClassUtil.getDeproxiedClass(ClassUtil.java:44) org.openmrs.module.metadatasharing.handler.HandlerEngine.getPropertiesHandler(HandlerEngine.java:196) org.openmrs.module.metadatasharing.handler.Handler.getUuid(Handler.java:176) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.getExistingOrNewImportedItem(PackageImporterImpl.java:302) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.addRelatedItemToImportedItem(PackageImporterImpl.java:288) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.resolveRelatedImportItems(PackageImporterImpl.java:262) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.addRelatedItemToImportedItem(PackageImporterImpl.java:294) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.access$000(PackageImporterImpl.java:48) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl$1.visitMetadata(PackageImporterImpl.java:280) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl$1.visit(PackageImporterImpl.java:274) org.openmrs.module.metadatasharing.visitor.impl.OpenmrsObjectVisitor$1.visit(OpenmrsObjectVisitor.java:105) com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:134) org.openmrs.module.metadatasharing.visitor.impl.OpenmrsObjectVisitor.visitFields(OpenmrsObjectVisitor.java:88) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.resolveRelatedImportItems(PackageImporterImpl.java:265) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.createImportedItems(PackageImporterImpl.java:214) org.openmrs.module.metadatasharing.wrapper.impl.PackageImporterImpl.getImportedItems(PackageImporterImpl.java:117) org.openmrs.module.metadatasharing.web.controller.ImportController.load(ImportController.java:386) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:622) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.openmrs.module.web.filter.ForcePasswordChangeFilter.doFilter(ForcePasswordChangeFilter.java:61) org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:72) org.openmrs.module.web.filter.ModuleFilter.doFilter(ModuleFilter.java:54) org.openmrs.web.filter.OpenmrsFilter.doFilterInternal(OpenmrsFilter.java:107) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

Anyone can help?

Which versions of the metadatasharing and htmlform entry modules are you using?

Hi Kayiwa,

I am using

HTML Form Entry 3.3.1-SNAPSHOT

Metadata Sharing 1.1.9

1 Like

@jberchmas - Can you send the mds package? I have seen that error (LazyInitialization) – but forget how I fixed that.

Thanks,

Ellen

I sent it to you using email.

@jberchmas Have you checked tickets.openmrs.org? There are many reports/solutions about this error:

I will look at the mds package you sent and see if I can recreate it.

Ellen

@jberchmas - I am getting the same error on import of your zip file. Check the JIRA tickets for possible solutions. I recall there is some magic about module versions and compatibility. If you can’t find it, skype me tomorrow.

@jberchmas and @ball - from those tickets it appears that often this error is masking some underlying error. I would try a few things:

  1. Run the validation module against each instance and see if any issues arise
  2. Try to get a more detailed stack trace than what you have included thus far, that might point to the underlying issue
  3. Add some breakpoints into the code and utilize the debugger to understand better where things are failing, for what piece of metadata, etc.

Mike

@jberchmas it would also help to share the full server log at pastebin.com, just in case the underlying error is already there.

Hi @dkayiwa , We still having error after running validation module as @mseaton suggested. The below link have server log: https://pastebin.com/t2seDvVQ

I didn’t find anything in the catalina.out that wasn’t on the screen. @mseaton and I will look together today.

Ellen

@jberchmas / @ball, I tried importing the MDS package you are having trouble with, and was able to get the same error. I added some logging and debugged a bit, and am seeing the failure happening when trying to load a Program. I’m not 100% sure, but in looking at the contents of the MDS package, it seems likely that this is the problematic area:

<dependencies class="set" id="10">
  <org.openmrs.ProgramWorkflow id="11" uuid="c8dea23e-c596-40d0-a4a4-08cb61b82d3b">
    <creator/>
    <dateCreated id="12">2012-09-28 07:43:31</dateCreated>
    <changedBy/>
    <dateChanged id="13">2016-10-24 06:17:36</dateChanged>
    <retired>false</retired>
    <programWorkflowId>49</programWorkflowId>
    <program id="14" resolves-to="org.hibernate.proxy.pojo.javassist.SerializableProxy">
      <entityName>org.openmrs.Program</entityName>
      <id class="int">18</id>
      <readOnly>false</readOnly>
      <persistentClass>org.openmrs.Program</persistentClass>
      <interfaces id="15">
        <java-class>org.hibernate.proxy.HibernateProxy</java-class>
      </interfaces>
      <getIdentifierMethodClass>org.openmrs.Program</getIdentifierMethodClass>
      <setIdentifierMethodClass>org.openmrs.Program</setIdentifierMethodClass>
      <getIdentifierMethodName>getProgramId</getIdentifierMethodName>
      <setIdentifierMethodName>setProgramId</setIdentifierMethodName>
      <setIdentifierMethodParams id="16">
        <java-class>java.lang.Integer</java-class>
      </setIdentifierMethodParams>
    </program>  

In particular notice the references to SerializableProxy and HibernateProxy.

Now, you are running an older version of MDS - 1.1.9 or 1.1.10 I believe - whereas the most recent released version is 1.2.2. It’s possible that the bug that led to this has been fixed. But if the above is the issue, it will need to be fixed on the server that produced the package - the exporting server - as well as the importing server.

CCing @raff on this, as he may have more input or information as to whether I am interpreting the above correctly.

Mike

1 Like