Notice: In order to edit this ticket you need to be either: a Product Owner, The owner or the reporter of the ticket, or, in case of a Task not yet assigned, a team_member"

Task #10844 (closed)

Opened 6 years ago

Closed 6 years ago

BUG: Error after export as ome-tiff

Reported by: pwalczysko Owned by: rleigh
Priority: blocker Milestone: 5.0.0-beta1
Component: Export Version: n.a.
Keywords: export big FS Cc: ux@…, fs@…
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: n.a.
Sprint: FS demo 4.4

Description (last modified by pwalczysko)

Using Batch image export script on develop, Gretzky.
In Web as well as in Insight.
Workflow:

  • Gretzky: user-4 / read-only / Dataset : Petr big...
  • choose 2 or more images, one or more of which are big and a part of a MIF (multi-image file)
  • run "Batch image export" script on these images, selecting "ome-tiff" as output format
  • you will end up with error - no output is created
  • see the error below

The bug is there in case the images you have chosen are a part of the same MIF, as well as when the images belong to different MIFs - no difference in the result.

Found out during testing of https://github.com/ome/scripts/pull/30#issuecomment-17526839.

WARNING:omero.gateway:InternalException on <class 'omero.gateway.OmeroGatewaySafeCallWrapper'> to <86:24:41:e3:-51f141ba:13e7811cad3:-7cb2omero.api.Exporter> generateTiff((<ServiceOptsDict: {'omero.session.uuid': '7135aec0-ce92-456e-9be3-3fc047c68241', 'omero.client.uuid': 'bd13d346-5f38-450b-8eb1-4d891dbdf028'}>,), {})
Traceback (most recent call last):
  File "/home/omero/slave/workspace/OMERO-merge-develop/src/dist/lib/python/omero/gateway/__init__.py", line 3481, in __call__
    return self.f(*args, **kwargs)
  File "/home/omero/slave/workspace/OMERO-merge-develop/src/dist/lib/python/omero_api_Exporter_ice.py", line 93, in generateTiff
    return _M_omero.api.Exporter._op_generateTiff.invoke(self, ((), _ctx))
InternalException: exception ::omero::InternalException
{
    serverStackTrace = loci.formats.FormatException: Metadata object has null root; call IMetadata.createRoot() first
    at loci.formats.MetadataTools.verifyMinimumPopulated(MetadataTools.java:331)
    at loci.formats.FormatWriter.checkParams(FormatWriter.java:375)
    at loci.formats.out.TiffWriter.saveBytes(TiffWriter.java:174)
    at loci.formats.out.OMETiffWriter.saveBytes(OMETiffWriter.java:201)
    at loci.formats.out.OMETiffWriter.saveBytes(OMETiffWriter.java:187)
    at loci.formats.FormatWriter.saveBytes(FormatWriter.java:136)
    at ome.services.blitz.impl.ExporterI$2.doWork(ExporterI.java:413)
    at sun.reflect.GeneratedMethodAccessor254.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:592)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at ome.services.util.Executor$Impl$Interceptor.invoke(Executor.java:518)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at ome.security.basic.EventHandler.invoke(EventHandler.java:154)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:111)
    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:241)
    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 $Proxy66.doWork(Unknown Source)
    at ome.services.util.Executor$Impl.execute(Executor.java:416)
    at ome.services.util.Executor$Impl.execute(Executor.java:360)
    at ome.services.blitz.impl.ExporterI.do_tiff(ExporterI.java:343)
    at ome.services.blitz.impl.ExporterI.generateTiff_async(ExporterI.java:213)
    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:592)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at omero.cmd.CallContext.invoke(CallContext.java:59)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy114.generateTiff_async(Unknown Source)
    at omero.api._ExporterTie.generateTiff_async(_ExporterTie.java:71)
    at omero.api._ExporterDisp.___generateTiff(_ExporterDisp.java:175)
    at omero.api._ExporterDisp.__dispatch(_ExporterDisp.java:248)
    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 = loci.formats.FormatException
    message = Metadata object has null root; call IMetadata.createRoot() first
}
Traceback (most recent call last):
  File "./script", line 527, in <module>
    runScript()
  File "./script", line 513, in runScript
    fileAnnotation, message = batchImageExport(conn, scriptParams)
  File "./script", line 357, in batchImageExport
    saveAsOmeTiff(conn, img, folder_name)
  File "./script", line 171, in saveAsOmeTiff
    fileSize, block_gen = image.exportOmeTiff(bufsize=65536)
  File "/home/omero/slave/workspace/OMERO-merge-develop/src/dist/lib/python/omero/gateway/__init__.py", line 6790, in exportOmeTiff
    size = e.generateTiff(self._conn.SERVICE_OPTS)
  File "/home/omero/slave/workspace/OMERO-merge-develop/src/dist/lib/python/omero/gateway/__init__.py", line 3484, in __call__
    return self.handle_exception(e, *args, **kwargs)
  File "/home/omero/slave/workspace/OMERO-merge-develop/src/dist/lib/python/omero/gateway/__init__.py", line 3481, in __call__
    return self.f(*args, **kwargs)
  File "/home/omero/slave/workspace/OMERO-merge-develop/src/dist/lib/python/omero_api_Exporter_ice.py", line 93, in generateTiff
    return _M_omero.api.Exporter._op_generateTiff.invoke(self, ((), _ctx))
omero.InternalException: exception ::omero::InternalException
{
    serverStackTrace = loci.formats.FormatException: Metadata object has null root; call IMetadata.createRoot() first
    at loci.formats.MetadataTools.verifyMinimumPopulated(MetadataTools.java:331)
    at loci.formats.FormatWriter.checkParams(FormatWriter.java:375)
    at loci.formats.out.TiffWriter.saveBytes(TiffWriter.java:174)
    at loci.formats.out.OMETiffWriter.saveBytes(OMETiffWriter.java:201)
    at loci.formats.out.OMETiffWriter.saveBytes(OMETiffWriter.java:187)
    at loci.formats.FormatWriter.saveBytes(FormatWriter.java:136)
    at ome.services.blitz.impl.ExporterI$2.doWork(ExporterI.java:413)
    at sun.reflect.GeneratedMethodAccessor254.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:592)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at ome.services.util.Executor$Impl$Interceptor.invoke(Executor.java:518)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at ome.security.basic.EventHandler.invoke(EventHandler.java:154)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:111)
    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:241)
    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 $Proxy66.doWork(Unknown Source)
    at ome.services.util.Executor$Impl.execute(Executor.java:416)
    at ome.services.util.Executor$Impl.execute(Executor.java:360)
    at ome.services.blitz.impl.ExporterI.do_tiff(ExporterI.java:343)
    at ome.services.blitz.impl.ExporterI.generateTiff_async(ExporterI.java:213)
    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:592)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at omero.cmd.CallContext.invoke(CallContext.java:59)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy114.generateTiff_async(Unknown Source)
    at omero.api._ExporterTie.generateTiff_async(_ExporterTie.java:71)
    at omero.api._ExporterDisp.___generateTiff(_ExporterDisp.java:175)
    at omero.api._ExporterDisp.__dispatch(_ExporterDisp.java:248)
    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 = loci.formats.FormatException
    message = Metadata object has null root; call IMetadata.createRoot() first
}

Change History (18)

comment:1 Changed 6 years ago by pwalczysko

  • Keywords FS added

comment:2 Changed 6 years ago by pwalczysko

  • Description modified (diff)
  • Summary changed from BUG: Error after export as one-tiff to BUG: Error after export as ome-tiff

comment:3 Changed 6 years ago by jamoore

  • Owner set to rleigh
  • Sprint changed from FS demo 4.x to FS demo 4.1

Roger: this is another bug related to https://github.com/openmicroscopy/openmicroscopy/pull/1136 Can we either exclude or fix ASAP?

comment:4 Changed 6 years ago by pwalczysko

In fact, all the exports as one-tiff fail at present, be it big images or small ones, be it part of MIF or not. The bug is the same as noted above. I think JM is working on that in https://trac.openmicroscopy.org.uk/ome/ticket/10848.

comment:5 Changed 6 years ago by pwalczysko

Retested on Gretzky, build number
Web is fine on all accounts - no problem with big images, multiple big images, multiple big images as part of MIF, when the Batch image export is run with "OIME-TIFF" option.
When selecting several images, big and small, which belong to a MIF, then in Web, it creates one-tiffs from the non-big images out of the selected images, the big ones are ignored (as expected).

Insight has a bug - after Batch image export is run on a MIF with a big image in it (svs), with multiple images being selected, the script runs okay to the end. A file is created and attached to the first image of the set.
The name of the created .zip file is "-1". When trying to download it, got following error:

(java.lang.Exception: java.lang.IllegalArgumentException: File ID not valid
	at org.openmicroscopy.shoola.env.data.OmeroMetadataServiceImpl.downloadFile(OmeroMetadataServiceImpl.java:1355)
	at org.openmicroscopy.shoola.env.data.views.calls.FilesLoader$2.doCall(FilesLoader.java:119)
	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:276)
	at org.openmicroscopy.shoola.util.concur.tasks.AsyncProcessor$Runner.run(AsyncProcessor.java:91)
	at java.lang.Thread.run(Thread.java:680)

	at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.showErrorDialog(UserNotifierImpl.java:189)
	at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.notifyError(UserNotifierImpl.java:287)
	at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.notifyError(UserNotifierImpl.java:257)
	at org.openmicroscopy.shoola.env.ui.ActivityComponent.showException(ActivityComponent.java:415)
	at org.openmicroscopy.shoola.env.ui.ActivityComponent.actionPerformed(ActivityComponent.java:928)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
	at java.awt.Component.processMouseEvent(Component.java:6382)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
	at java.awt.Component.processEvent(Component.java:6147)
	at java.awt.Container.processEvent(Container.java:2083)
	at java.awt.Component.dispatchEventImpl(Component.java:4744)
	at java.awt.Container.dispatchEventImpl(Container.java:2141)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
	at java.awt.Container.dispatchEventImpl(Container.java:2127)
	at java.awt.Window.dispatchEventImpl(Window.java:2489)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
	at java.awt.EventQueue.access$400(EventQueue.java:82)
	at java.awt.EventQueue$2.run(EventQueue.java:663)
	at java.awt.EventQueue$2.run(EventQueue.java:661)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:677)
	at java.awt.EventQueue$3.run(EventQueue.java:675)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

comment:6 Changed 6 years ago by jburel

  • Component changed from Export to Insight
  • Owner changed from rleigh to jburel

Looks more like an insight issue.

comment:7 Changed 6 years ago by jburel

  • Sprint changed from FS demo 4.1 to FS demo 4.2

Did you test on howe?

comment:8 Changed 6 years ago by pwalczysko

On howe:

  • select 3 svs images from one MIF (two of them big, one small) and run Batch image export on them with "OME-TIFF" option - script runs fine, output fine (the file produced has the name of the image, not "-1" like on Gretzky). Navigation to the attached file fine, viewing fine, download fine - just the small image export was performed, the big images were ignored. All works as expected.

comment:9 Changed 6 years ago by jburel

  • Sprint changed from FS demo 4.2 to FS demo 4.x

comment:10 Changed 6 years ago by jburel

  • Sprint changed from FS demo 4.x to FS Demo 4.3

comment:11 Changed 6 years ago by mtbcarroll

  • Owner changed from jburel to mtbcarroll
  • Status changed from new to accepted

comment:12 Changed 6 years ago by mtbcarroll

With a current develop merge build, the zip files I make from other batch export, e.g., JPEG, are all named Batch_Image_Export.zip, but with OME-TIFF so far all I can get is Metadata object has null root from both Insight and web, with or without big images or MIFs involved.

Last edited 6 years ago by mtbcarroll (previous) (diff)

comment:13 Changed 6 years ago by jburel

Seems like a deeper problem due to recent change in store and BF.

comment:14 Changed 6 years ago by mtbcarroll

  • Component changed from Insight to Export
  • Owner changed from mtbcarroll to rleigh

Ah, recent changes? I'm not seeing anything obviously absurd in ExporterI or FormatWriter but this is deeply enough into stuff I don't know that I'm not going to be fixing this before the demo tomorrow. Roger, do you have any idea what's going on?

comment:15 Changed 6 years ago by jburel

  • Sprint changed from FS Demo 4.3 to FS demo 4.4

Moved from sprint FS Demo 4.3

comment:16 Changed 6 years ago by jamoore

Definitely still see this in a build today:

 $ touch export.fake
 $ bin/omero import export.fake
(ome1)jamoore@blue:/opt/ome2/dist$ bin/omero export --file /tmp/export.ome.tiff Image:4801
InternalException: Metadata object has null root; call IMetadata.createRoot() first

Roger: can you please take a look ASAP.

comment:17 Changed 6 years ago by rleigh

This should be fixed on my metadataroot-null branch. This ensures that pixelsList in OMEROMetadataStoreClient is never null.

comment:18 Changed 6 years ago by jamoore

  • Resolution set to fixed
  • Status changed from accepted to closed

PR merged.

Note: See TracTickets for help on using tickets. You may also have a look at Agilo extensions to the ticket.

1.3.13-PRO © 2008-2011 Agilo Software all rights reserved (this page was served in: 0.109589 sec.)

We're Hiring!