Task #7886 (closed)
Opened 8 years ago
Closed 7 years ago
Bug: OME-TIFF from TILL Photonics
| Reported by: | jburel | Owned by: | mlinkert |
|---|---|---|---|
| Priority: | critical | Milestone: | OMERO-4.4 |
| Component: | Import | Version: | n.a. |
| Keywords: | n.a. | Cc: | jamoore, cxallan |
| Resources: | n.a. | Referenced By: | n.a. |
| References: | n.a. | Remaining Time: | 0.0d |
| Sprint: | 2012-03-13 (10) |
Description
TILL Photonics is one the companies that offers direct saving of their data into OME TIFF files.
We have been setting up a new experimental set-up recently and used their LA-software for controlliong the hardware and acquiring the data.
Unfortunately, their OME TIFF files fail to import into our OMERO installation. Please find part of the error messages below.
java.lang.RuntimeException: omero.ValidationException
serverStackTrace = "ome.conditions.ValidationException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:648)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:117)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:231)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.services.util.ServiceHandler.invoke(ServiceHandler.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy64.doWork(Unknown Source)
at ome.services.util.Executor$Impl.execute(Executor.java:371)
at ome.services.throttling.Adapter.run(Adapter.java:51)
at ome.services.throttling.InThreadThrottlingStrategy.runnableCall(InThreadThrottlingStrategy.java:89)
at ome.services.blitz.impl.AbstractAmdServant.runnableCall(AbstractAmdServant.java:150)
at ome.services.blitz.impl.MetadataStoreI.saveToDB_async(MetadataStoreI.java:190)
at omero.api._MetadataStoreTie.saveToDB_async(_MetadataStoreTie.java:85)
at omero.api._MetadataStoreDisp.___saveToDB(_MetadataStoreDisp.java:218)
at omero.api._MetadataStoreDisp.__dispatch(_MetadataStoreDisp.java:366)
at IceInternal.Incoming.invoke(Incoming.java:159)
at Ice.ConnectionI.invokeAll(ConnectionI.java:2037)
at Ice.ConnectionI.message(ConnectionI.java:972)
at IceInternal.ThreadPool.run(ThreadPool.java:577)
at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:971)
"
serverExceptionClass = "ome.conditions.ValidationException"
message = "not-null property references a null or transient value: ome.model.acquisition.OTF.objective; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective"
at ome.formats.OMEROMetadataStoreClient.saveToDB(OMEROMetadataStoreClient.java:2163)
at ome.formats.importer.ImportLibrary.importMetadata(ImportLibrary.java:357)
at ome.formats.importer.ImportLibrary.importImage(ImportLibrary.java:539)
at org.openmicroscopy.shoola.env.data.OMEROGateway.importImage(OMEROGateway.java:6402)
at org.openmicroscopy.shoola.env.data.OmeroImageServiceImpl.importFile(OmeroImageServiceImpl.java:1191)
at org.openmicroscopy.shoola.env.data.views.calls.ImagesImporter.importFile(ImagesImporter.java:85)
at org.openmicroscopy.shoola.env.data.views.calls.ImagesImporter.access$000(ImagesImporter.java:54)
at org.openmicroscopy.shoola.env.data.views.calls.ImagesImporter$1.doCall(ImagesImporter.java:111)
at org.openmicroscopy.shoola.env.data.views.BatchCall.doStep(BatchCall.java:144)
at org.openmicroscopy.shoola.util.concur.tasks.CompositeTask.doStep(CompositeTask.java:226)
at org.openmicroscopy.shoola.env.data.views.CompositeBatchCall.doStep(CompositeBatchCall.java:126)
at org.openmicroscopy.shoola.util.concur.tasks.ExecCommand.exec(ExecCommand.java:165)
at org.openmicroscopy.shoola.util.concur.tasks.ExecCommand.run(ExecCommand.java:274)
at org.openmicroscopy.shoola.util.concur.tasks.AsyncProcessor$Runner.run(AsyncProcessor.java:91)
at java.lang.Thread.run(Thread.java:680)
Caused by: omero.ValidationException
serverStackTrace = "ome.conditions.ValidationException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:648)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:117)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:231)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.services.util.ServiceHandler.invoke(ServiceHandler.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy64.doWork(Unknown Source)
at ome.services.util.Executor$Impl.execute(Executor.java:371)
at ome.services.throttling.Adapter.run(Adapter.java:51)
at ome.services.throttling.InThreadThrottlingStrategy.runnableCall(InThreadThrottlingStrategy.java:89)
at ome.services.blitz.impl.AbstractAmdServant.runnableCall(AbstractAmdServant.java:150)
at ome.services.blitz.impl.MetadataStoreI.saveToDB_async(MetadataStoreI.java:190)
at omero.api._MetadataStoreTie.saveToDB_async(_MetadataStoreTie.java:85)
at omero.api._MetadataStoreDisp.___saveToDB(_MetadataStoreDisp.java:218)
at omero.api._MetadataStoreDisp.__dispatch(_MetadataStoreDisp.java:366)
at IceInternal.Incoming.invoke(Incoming.java:159)
at Ice.ConnectionI.invokeAll(ConnectionI.java:2037)
at Ice.ConnectionI.message(ConnectionI.java:972)
at IceInternal.ThreadPool.run(ThreadPool.java:577)
at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:971)
"
serverExceptionClass = "ome.conditions.ValidationException"
message = "not-null property references a null or transient value: ome.model.acquisition.OTF.objective; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective"
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at IceInternal.BasicStream$DynamicUserExceptionFactory.createAndThrow(BasicStream.java:2243)
at IceInternal.BasicStream.throwException(BasicStream.java:1632)
at IceInternal.Outgoing.throwUserException(Outgoing.java:442)
at omero.api._MetadataStoreDelM.saveToDB(_MetadataStoreDelM.java:162)
at omero.api.MetadataStorePrxHelper.saveToDB(MetadataStorePrxHelper.java:254)
at omero.api.MetadataStorePrxHelper.saveToDB(MetadataStorePrxHelper.java:226)
at ome.formats.OMEROMetadataStoreClient.saveToDB(OMEROMetadataStoreClient.java:2148)
... 14 more
at org.openmicroscopy.shoola.env.data.OMEROGateway.importImage(OMEROGateway.java:6447)
at org.openmicroscopy.shoola.env.data.OmeroImageServiceImpl.importFile(OmeroImageServiceImpl.java:1191)
at org.openmicroscopy.shoola.env.data.views.calls.ImagesImporter.importFile(ImagesImporter.java:85)
at org.openmicroscopy.shoola.env.data.views.calls.ImagesImporter.access$000(ImagesImporter.java:54)
at org.openmicroscopy.shoola.env.data.views.calls.ImagesImporter$1.doCall(ImagesImporter.java:111)
at org.openmicroscopy.shoola.env.data.views.BatchCall.doStep(BatchCall.java:144)
at org.openmicroscopy.shoola.util.concur.tasks.CompositeTask.doStep(CompositeTask.java:226)
at org.openmicroscopy.shoola.env.data.views.CompositeBatchCall.doStep(CompositeBatchCall.java:126)
at org.openmicroscopy.shoola.util.concur.tasks.ExecCommand.exec(ExecCommand.java:165)
at org.openmicroscopy.shoola.util.concur.tasks.ExecCommand.run(ExecCommand.java:274)
at org.openmicroscopy.shoola.util.concur.tasks.AsyncProcessor$Runner.run(AsyncProcessor.java:91)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.RuntimeException: omero.ValidationException
serverStackTrace = "ome.conditions.ValidationException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:648)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:117)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:231)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.services.util.ServiceHandler.invoke(ServiceHandler.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy64.doWork(Unknown Source)
at ome.services.util.Executor$Impl.execute(Executor.java:371)
at ome.services.throttling.Adapter.run(Adapter.java:51)
at ome.services.throttling.InThreadThrottlingStrategy.runnableCall(InThreadThrottlingStrategy.java:89)
at ome.services.blitz.impl.AbstractAmdServant.runnableCall(AbstractAmdServant.java:150)
at ome.services.blitz.impl.MetadataStoreI.saveToDB_async(MetadataStoreI.java:190)
at omero.api._MetadataStoreTie.saveToDB_async(_MetadataStoreTie.java:85)
at omero.api._MetadataStoreDisp.___saveToDB(_MetadataStoreDisp.java:218)
at omero.api._MetadataStoreDisp.__dispatch(_MetadataStoreDisp.java:366)
at IceInternal.Incoming.invoke(Incoming.java:159)
at Ice.ConnectionI.invokeAll(ConnectionI.java:2037)
at Ice.ConnectionI.message(ConnectionI.java:972)
at IceInternal.ThreadPool.run(ThreadPool.java:577)
at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:971)
"
serverExceptionClass = "ome.conditions.ValidationException"
message = "not-null property references a null or transient value: ome.model.acquisition.OTF.objective; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective"
at ome.formats.OMEROMetadataStoreClient.saveToDB(OMEROMetadataStoreClient.java:2163)
at ome.formats.importer.ImportLibrary.importMetadata(ImportLibrary.java:357)
at ome.formats.importer.ImportLibrary.importImage(ImportLibrary.java:539)
at org.openmicroscopy.shoola.env.data.OMEROGateway.importImage(OMEROGateway.java:6402)
... 11 more
Caused by: omero.ValidationException
serverStackTrace = "ome.conditions.ValidationException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ome.model.acquisition.OTF.objective
Change History (9)
comment:1 Changed 8 years ago by mlinkert
comment:2 Changed 8 years ago by jmoore
Quick 2 cents: seems like this is something that may should be configurable. "STRICT" v. "LAX" or whatever, which in the user-interface could be represented as a "force import" or "import as TIFF".
It seems like users could be surprised to think they're importing an OME-TIFF and then only get a TIFF out of it, silently. On the other hand, completely bailing is equally annoying.
Are there other cases where we tolerate a bad element (here the OTF) perhaps by nulling it out?
comment:3 Changed 8 years ago by mlinkert
- Sprint set to 2012-02-14 (8)
comment:4 Changed 8 years ago by mlinkert
- Cc mlinkert-x removed
- Owner set to mlinkert-x
comment:5 Changed 8 years ago by mlinkert
See also #6309. Would be good to discuss this at the dev meeting next week.
comment:6 Changed 7 years ago by jburel
- Sprint changed from 2012-02-14 (8) to 2012-02-28 (9)
Moved from sprint 2012-02-14 (8)
comment:7 Changed 7 years ago by mlinkert
- Remaining Time set to 0.001
- Status changed from new to accepted
What I've done for now is just disabled conversion of OTF elements:
https://github.com/melissalinkert/bioformats/commit/9326a944b1c3a51432ec9bd317841afdf5e6b783
That solves this problem, but as we've discussed there is still the broader issue of what to do with subtly invalid OME-TIFF files.
comment:8 Changed 7 years ago by jburel
- Sprint changed from 2012-02-28 (9) to 2012-03-13 (10)
Moved from sprint 2012-02-28 (9)
comment:9 Changed 7 years ago by mlinkert
- Remaining Time changed from 0.001 to 0
- Resolution set to fixed
- Status changed from accepted to closed
Fix merged with this PR: https://github.com/openmicroscopy/bioformats/pull/32
The broader issue here is how to handle these sorts of subtly invalid OME-XML/OME-TIFF files. I can think of a few approaches:
Any preferences or other ideas?