Yes just to clarify - there was an export problem and an import problem. The export problem was due to our database being corrupted and I think it's reasonable for module developers to assume database integrity.
The import issue appears to be the only actual problem in MDS - https://tickets.openmrs.org/browse/META-199 On 1 March 2012 21:50, Rafal Korytkowski <[email protected]> wrote: > Dave, it's Hibernate that complains about the violated FK constraint which > throws an exception while initializing the object. It should be possible to > catch that runtime exception. We would have to watch out for that as it may > happen either while loading an object or calling one of its getters > (depending on the lazy-loading setting). The catch should be somewhere in > OpenmrsObjectVisitor where the exception is thrown (see Rowan's stacktrace). > > The question is if MDS should be handling wrong data in your db :-) > > -Rafal > > > > On 1 March 2012 20:10, Rowan Seymour <[email protected]> wrote: > >> Rafal was right - we were missing the drug in the database after a >> previous SQL import of concepts... which is why SQL dumps are not a great >> way to move concepts around and why we really appreciate the work you guys >> are doing on MDS >> >> >> On 1 March 2012 20:48, Dave Thomas <[email protected]> wrote: >> >>> Why wouldn't the drug just be added to the metadata sharing package when >>> referenced by answer_drug? >>> >>> I don't see why you'd ever want to import/export a concept with an >>> answer_drug where you wouldn't want the package to include the drug. >>> >>> (rolling up sleeves to look at metadatasharing code) >>> >>> d >>> >>> >>> On Thu, Mar 1, 2012 at 4:35 AM, Rafal Korytkowski <[email protected]>wrote: >>> >>>> It's possible that you may have imported it. Normally MySQL dumps are >>>> imported with foreign_key_checks=OFF. >>>> >>>> I'd assume this drug is in the concept_answer table so execute this >>>> query: >>>> >>>> select * from concept_answer where answer_drug = 142; >>>> >>>> -Rafal >>>> >>>> >>>> On 1 March 2012 13:10, Rowan Seymour <[email protected]> wrote: >>>> >>>>> There is no drug 142. Am looking in the database to see where we could >>>>> have a FK constraint violation. It's InnoDB tables >>>>> with foreign_key_checks=ON so I don't see how it's possible. What do you >>>>> think is referencing that drug? >>>>> >>>>> I'll create a ticket for the other exception. >>>>> >>>>> Thanks >>>>> >>>>> >>>>> On 1 March 2012 13:15, Rafal Korytkowski <[email protected]> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> The export fails since you've got a FK constraint violation in your >>>>>> db: *No row with the given identifier exists: >>>>>> [org.openmrs.Drug#142]. *Make sure that a drug with id 142 exists or >>>>>> don't reference it in your concepts. >>>>>> >>>>>> Regarding the import it's trying to save concepts in the wrong order. >>>>>> Can you please create a ticket and attach your package if it's possible >>>>>> or >>>>>> else I'll ask you to help me inspect the xml further. >>>>>> >>>>>> -Rafal >>>>>> >>>>>> On 1 March 2012 11:29, Rowan Seymour <[email protected]> wrote: >>>>>> >>>>>>> Another exception - this time trying to export all concepts from the >>>>>>> same server: >>>>>>> >>>>>>> *Caused by: org.openmrs.module.metadatasharing.task.TaskException: >>>>>>> Export failed* >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask.execute(ExportPackageTask.java:125) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.api.impl.MetadataSharingServiceImpl.executeTask(MetadataSharingServiceImpl.java:198) >>>>>>> * >>>>>>> * ...* >>>>>>> *Caused by: org.hibernate.ObjectNotFoundException: No row with the >>>>>>> given identifier exists: [org.openmrs.Drug#142]* >>>>>>> * at >>>>>>> org.hibernate.impl.SessionFactoryImpl$1.handleEntityNotFound(SessionFactoryImpl.java:377) >>>>>>> * >>>>>>> * at >>>>>>> org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:79) >>>>>>> * >>>>>>> * at >>>>>>> org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:68) >>>>>>> * >>>>>>> * at >>>>>>> org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.visitor.impl.OpenmrsObjectVisitor$1.visit(OpenmrsObjectVisitor.java:89) >>>>>>> * >>>>>>> * at >>>>>>> com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:129) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.visitor.impl.OpenmrsObjectVisitor.visitFields(OpenmrsObjectVisitor.java:83) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask.resolveRelatedItems(ExportPackageTask.java:176) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask.access$2(ExportPackageTask.java:175) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask$1.visitMetadata(ExportPackageTask.java:202) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask$1.visit(ExportPackageTask.java:184) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.visitor.impl.OpenmrsObjectVisitor$1.visit(OpenmrsObjectVisitor.java:96) >>>>>>> * >>>>>>> * at >>>>>>> com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:129) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.visitor.impl.OpenmrsObjectVisitor.visitFields(OpenmrsObjectVisitor.java:83) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask.resolveRelatedItems(ExportPackageTask.java:176) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask.exportSubpackage(ExportPackageTask.java:148) >>>>>>> * >>>>>>> * at >>>>>>> org.openmrs.module.metadatasharing.task.impl.ExportPackageTask.execute(ExportPackageTask.java:98) >>>>>>> * >>>>>>> * ... 44 more* >>>>>>> >>>>>>> >>>>>>> It also outputted about 15MB to my catalina.out log, most of which >>>>>>> appears to be repetition of this warning: >>>>>>> >>>>>>> *WARN - StringLocaleConverter.getDecimalFormat(281) |2012-03-01 >>>>>>> 11:54:50,961| No pattern provided, using default.* >>>>>>> >>>>>>> >>>>>>> On 1 March 2012 12:13, Rowan Seymour <[email protected]> wrote: >>>>>>> >>>>>>>> Am trying to import a package with MDS 1.0.2 and getting the >>>>>>>> exception below. The package was also made with 1.0.2 >>>>>>>> * >>>>>>>> * >>>>>>>> *Caused by: org.openmrs.module.metadatasharing.task.TaskException: >>>>>>>> Import failed* >>>>>>>> *...* >>>>>>>> *Caused by: org.openmrs.api.db.DAOException: Error saving >>>>>>>> org.openmrs.Concept [e44dae58-fec8-4567-bd44-e989232af0e7]* >>>>>>>> *...* >>>>>>>> *Caused by: org.openmrs.api.APIException: Cannot save 7073. Failed >>>>>>>> with the following exception:* >>>>>>>> *java.lang.reflect.InvocationTargetException* >>>>>>>> * >>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>>>>> Method) >>>>>>>> at >>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>>>>>> at >>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>>>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.reflection.OpenmrsClassScanner.invokeServiceSaveItem(OpenmrsClassScanner.java:254) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.reflection.OpenmrsClassScanner.serviceSaveItem(OpenmrsClassScanner.java:174) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.handler.impl.OpenmrsObjectHandler.saveItem(OpenmrsObjectHandler.java:107) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.handler.impl.OpenmrsObjectHandler.saveItem(OpenmrsObjectHandler.java:1) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.handler.Handler.saveItem(Handler.java:38) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.task.impl.ImportPackageTask.saveItem(ImportPackageTask.java:284) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.task.impl.ImportPackageTask.saveItem(ImportPackageTask.java:278) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.task.impl.ImportPackageTask.saveItem(ImportPackageTask.java:278) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.task.impl.ImportPackageTask.saveItem(ImportPackageTask.java:278) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.task.impl.ImportPackageTask.saveItem(ImportPackageTask.java:278) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.task.impl.ImportPackageTask.importItems(ImportPackageTask.java:199) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.task.impl.ImportPackageTask.execute(ImportPackageTask.java:85) >>>>>>>> at >>>>>>>> org.openmrs.module.metadatasharing.api.impl.MetadataSharingServiceImpl.executeTask(MetadataSharingServiceImpl.java:198) >>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>> * >>>>>>>> *...* >>>>>>>> *Caused by: org.hibernate.PropertyValueException: not-null >>>>>>>> property references a null or transient value: >>>>>>>> org.openmrs.ConceptAnswer.answerConcept* >>>>>>>> * >>>>>>>> at >>>>>>>> org.hibernate.engine.Nullability.checkNullability(Nullability.java:72) >>>>>>>> at >>>>>>>> org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290) >>>>>>>> * >>>>>>>> >>>>>>>> I assume "*Cannot save 7073*" refers to the item with id=7073 >>>>>>>> which would be this ConceptMap in the metadata.xml: >>>>>>>> >>>>>>>> <org.openmrs.ConceptMap id="*7073*" >>>>>>>> uuid="75591ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"> >>>>>>>> <conceptMapId>13,329</conceptMapId> >>>>>>>> <concept reference="7046"/> >>>>>>>> <source reference="671"/> >>>>>>>> <sourceCode>283025007</sourceCode> >>>>>>>> <comment>Map Type: 1</comment> >>>>>>>> <creator/> >>>>>>>> <dateCreated id="7074">2010-04-25 >>>>>>>> 11:29:41</dateCreated> >>>>>>>> </org.openmrs.ConceptMap> >>>>>>>> >>>>>>>> And the concept with that UUID is: >>>>>>>> >>>>>>>> <org.openmrs.ConceptAnswer id="10576" >>>>>>>> uuid="575e736e-347a-4487-aced-10c7cdd9ec5f"> >>>>>>>> <conceptAnswerId>6,850</conceptAnswerId> >>>>>>>> <concept reference="5900"/> >>>>>>>> <answerConcept id="10577" >>>>>>>> resolves-to="org.openmrs.Concept" uuid="* >>>>>>>> e44dae58-fec8-4567-bd44-e989232af0e7*"> >>>>>>>> <conceptId>7,181</conceptId> >>>>>>>> <retired>false</retired> >>>>>>>> <datatype reference="37"/> >>>>>>>> <conceptClass reference="897"/> >>>>>>>> <set>false</set> >>>>>>>> <version>1</version> >>>>>>>> <creator/> >>>>>>>> <dateCreated id="10579">2011-12-15 >>>>>>>> 04:22:46</dateCreated> >>>>>>>> <changedBy/> >>>>>>>> <dateChanged id="10580">2012-01-16 >>>>>>>> 20:03:00</dateChanged> >>>>>>>> <names class="set" id="10581"> >>>>>>>> <org.openmrs.ConceptName id="10582" >>>>>>>> uuid="435c4cb9-5527-491c-87c6-43c3bd64c2e5"> >>>>>>>> <conceptNameId>14,688</conceptNameId> >>>>>>>> <concept reference="10577"/> >>>>>>>> <name>Obstructed Labor, Antepartum</name> >>>>>>>> <locale id="10583">en</locale> >>>>>>>> <creator/> >>>>>>>> <dateCreated id="10584">2011-12-15 >>>>>>>> 04:22:46</dateCreated> >>>>>>>> <voided>false</voided> >>>>>>>> <tags class="set" id="10585"> >>>>>>>> <org.openmrs.ConceptNameTag >>>>>>>> reference="28"/> >>>>>>>> </tags> >>>>>>>> </org.openmrs.ConceptName> >>>>>>>> </names> >>>>>>>> <answers class="set" id="10586"/> >>>>>>>> <conceptSets class="set" id="10587"/> >>>>>>>> <descriptions class="set" id="10588"/> >>>>>>>> <conceptMappings class="set" id="10589"> >>>>>>>> <org.openmrs.ConceptMap id="10590" >>>>>>>> uuid="12e8f7ab-c801-4c4e-9ba0-d5a516a8ac81"> >>>>>>>> <conceptMapId>13,442</conceptMapId> >>>>>>>> <concept reference="10577"/> >>>>>>>> <source reference="1428"/> >>>>>>>> <sourceCode>O66.9</sourceCode> >>>>>>>> <creator/> >>>>>>>> <dateCreated id="10591">2011-12-15 >>>>>>>> 04:22:46</dateCreated> >>>>>>>> </org.openmrs.ConceptMap> >>>>>>>> <org.openmrs.ConceptMap id="10592" >>>>>>>> uuid="06e77deb-29b4-423b-bfb3-51f7670dae71"> >>>>>>>> <conceptMapId>14,034</conceptMapId> >>>>>>>> <concept reference="10577"/> >>>>>>>> <source reference="76"/> >>>>>>>> <sourceCode>7181</sourceCode> >>>>>>>> <creator/> >>>>>>>> <dateCreated id="10593">2012-01-16 >>>>>>>> 20:03:00</dateCreated> >>>>>>>> </org.openmrs.ConceptMap> >>>>>>>> <org.openmrs.ConceptMap id="10594" >>>>>>>> uuid="0332cfca-4aa4-46a9-9b76-6fa45c9ba336"> >>>>>>>> <conceptMapId>13,441</conceptMapId> >>>>>>>> <concept reference="10577"/> >>>>>>>> <source reference="71"/> >>>>>>>> <sourceCode>7558</sourceCode> >>>>>>>> <creator/> >>>>>>>> <dateCreated id="10595">2011-12-15 >>>>>>>> 09:20:01</dateCreated> >>>>>>>> </org.openmrs.ConceptMap> >>>>>>>> </conceptMappings> >>>>>>>> <compatibleCache id="10596"> >>>>>>>> <entry> >>>>>>>> <locale reference="92"/> >>>>>>>> <vector id="10597"> >>>>>>>> <org.openmrs.ConceptName >>>>>>>> reference="10582"/> >>>>>>>> </vector> >>>>>>>> </entry> >>>>>>>> </compatibleCache> >>>>>>>> </answerConcept> >>>>>>>> <creator/> >>>>>>>> <dateCreated id="10598">2011-12-15 >>>>>>>> 04:23:05</dateCreated> >>>>>>>> </org.openmrs.ConceptAnswer> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Rowan Seymour* >>>>>>> tel: +250 783835665 >>>>>>> http://twitter.com/rowanseymour >>>>>>> >>>>>>> ------------------------------ >>>>>>> Click here to >>>>>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from >>>>>>> OpenMRS Developers' mailing list >>>>>>> >>>>>> >>>>>> ------------------------------ >>>>>> Click here to >>>>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from >>>>>> OpenMRS Developers' mailing list >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> *Rowan Seymour* >>>>> tel: +250 783835665 >>>>> http://twitter.com/rowanseymour >>>>> >>>>> ------------------------------ >>>>> Click here to >>>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from >>>>> OpenMRS Developers' mailing list >>>>> >>>> >>>> ------------------------------ >>>> Click here to >>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from >>>> OpenMRS Developers' mailing list >>>> >>> >>> ------------------------------ >>> Click here to >>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from >>> OpenMRS Developers' mailing list >>> >> >> >> >> -- >> *Rowan Seymour* >> tel: +250 783835665 >> http://twitter.com/rowanseymour >> >> ------------------------------ >> Click here to >> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from >> OpenMRS Developers' mailing list >> > > ------------------------------ > Click here to > unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from > OpenMRS Developers' mailing list > -- *Rowan Seymour* tel: +250 783835665 http://twitter.com/rowanseymour _________________________________________ To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to [email protected] with "SIGNOFF openmrs-devel-l" in the body (not the subject) of your e-mail. [mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]

