Running imageJ headless on a cluster in batch mode

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Running imageJ headless on a cluster in batch mode

Tim Schäfer
Hallo list,


we are runnning ImageJ on a 64 bit Linux cluster:
user@clusterhead:~> uname -a
Linux clusterhead 3.11.10-21-default #1 SMP Mon Jul 21 15:28:46 UTC 2014
(9a9565d) x86_64 x86_64 x86_64 GNU/Linux

ImageJ version info:
ImageJ launcher 3.1.6 (build 1183)

We are using ImageJ from the Fiji distribution (I hope this is the correct
mailing list then?) in headless mode, but it crashes with the following error
(command line included):


================================== START OF OUTPUT ============================
user@clusterhead:~> /develop/Fiji.app/ImageJ-linux64 -batch
No GUI detected.  Falling back to headless mode.
No GUI detected.  Falling back to headless mode.
log4j:WARN No appenders could be found for logger
(org.bushe.swing.event.EventService).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more
info.
Feb 9, 2015 1:51:19 PM java.util.prefs.FileSystemPreferences$2 run
INFO: Created user preferences directory.
[ERROR] Module threw exception
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at
net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:289)
        at net.imagej.ui.swing.updater.ImageJUpdater.run(ImageJUpdater.java:129)
        at org.scijava.command.CommandModule.run(CommandModule.java:201)
        at org.scijava.module.ModuleRunner.run(ModuleRunner.java:167)
        at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
        at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
        at
org.scijava.thread.DefaultThreadService$2.call(DefaultThreadService.java:164)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.reflect.InvocationTargetException
        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1043)
        at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1326)
        at
net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:285)
        ... 11 more
Caused by: java.awt.HeadlessException
        at
java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
        at java.awt.Window.<init>(Window.java:432)
        at java.awt.Frame.<init>(Frame.java:403)
        at javax.swing.JFrame.<init>(JFrame.java:202)
        at
net.imagej.ui.swing.updater.UpdaterFrame.<init>(UpdaterFrame.java:141)
        at
net.imagej.ui.swing.updater.ImageJUpdater$1.run(ImageJUpdater.java:132)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
        at java.awt.EventQueue.access$000(EventQueue.java:85)
        at java.awt.EventQueue$1.run(EventQueue.java:603)
        at java.awt.EventQueue$1.run(EventQueue.java:601)
        at java.security.AccessController.doPrivileged(Native Method)
        at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
        at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
^Cuser@clusterhead:~>
================================== END OF OUTPUT ============================

It seems to me that the updater is started, which tries to create a GUI,
resulting in the crash, but I am not sure.

Is there any way to prevent this? It would be OK to suppress the updater
completely, we do not want it to
update ImageJ anyway.

If you need more system info, please ask and I will provide it ASAP.


Thanks for any advice,

--
Tim

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Running imageJ headless on a cluster in batch mode

Rasband, Wayne (NIH/NIMH) [E]
On Feb 9, 2015, at 8:06 AM, Tim Schäfer <[hidden email]> wrote:

>
> Hallo list,
>
> we are runnning ImageJ on a 64 bit Linux cluster:
> user@clusterhead:~> uname -a
> Linux clusterhead 3.11.10-21-default #1 SMP Mon Jul 21 15:28:46 UTC 2014
> (9a9565d) x86_64 x86_64 x86_64 GNU/Linux
>
> ImageJ version info:
> ImageJ launcher 3.1.6 (build 1183)
>
> We are using ImageJ from the Fiji distribution (I hope this is the correct
> mailing list then?) in headless mode, but it crashes with the following error
> (command line included):

The best way to report Fiji bugs is to use the Help>Report a Bug command.

-wayne

> ================================== START OF OUTPUT ============================
> user@clusterhead:~> /develop/Fiji.app/ImageJ-linux64 -batch
> No GUI detected.  Falling back to headless mode.
> No GUI detected.  Falling back to headless mode.
> log4j:WARN No appenders could be found for logger
> (org.bushe.swing.event.EventService).
> log4j:WARN Please initialize the log4j system properly.
> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more
> info.
> Feb 9, 2015 1:51:19 PM java.util.prefs.FileSystemPreferences$2 run
> INFO: Created user preferences directory.
> [ERROR] Module threw exception
> java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
>        at
> net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:289)
>        at net.imagej.ui.swing.updater.ImageJUpdater.run(ImageJUpdater.java:129)
>        at org.scijava.command.CommandModule.run(CommandModule.java:201)
>        at org.scijava.module.ModuleRunner.run(ModuleRunner.java:167)
>        at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
>        at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
>        at
> org.scijava.thread.DefaultThreadService$2.call(DefaultThreadService.java:164)
>        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>        at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.reflect.InvocationTargetException
>        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1043)
>        at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1326)
>        at
> net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:285)
>        ... 11 more
> Caused by: java.awt.HeadlessException
>        at
> java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
>        at java.awt.Window.<init>(Window.java:432)
>        at java.awt.Frame.<init>(Frame.java:403)
>        at javax.swing.JFrame.<init>(JFrame.java:202)
>        at
> net.imagej.ui.swing.updater.UpdaterFrame.<init>(UpdaterFrame.java:141)
>        at
> net.imagej.ui.swing.updater.ImageJUpdater$1.run(ImageJUpdater.java:132)
>        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
>        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
>        at java.awt.EventQueue.access$000(EventQueue.java:85)
>        at java.awt.EventQueue$1.run(EventQueue.java:603)
>        at java.awt.EventQueue$1.run(EventQueue.java:601)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at
> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
>        at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
>        at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>        at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>        at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
>        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
>        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
>        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
> ^Cuser@clusterhead:~>
> ================================== END OF OUTPUT ============================
>
> It seems to me that the updater is started, which tries to create a GUI,
> resulting in the crash, but I am not sure.
>
> Is there any way to prevent this? It would be OK to suppress the updater
> completely, we do not want it to
> update ImageJ anyway.
>
> If you need more system info, please ask and I will provide it ASAP.
>
>
> Thanks for any advice,
>
> --
> Tim
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Running imageJ headless on a cluster in batch mode

ctrueden
In reply to this post by Tim Schäfer
Hi Tim,

> It seems to me that the updater is started, which tries to
> create a GUI, resulting in the crash, but I am not sure.

Thanks for the report. Your analysis looks correct -- this is a bug in
ImageJ2's Updater.

I pushed a potential bug-fix [1]. Could you please test it?

- Download the new version [2]
- Delete your ImageJ installation's jars/imagej-updater-0.7.0.jar
- Put the downloaded JAR there instead
- Try your headless workflow again
- Let me know how it goes!

Thanks,
Curtis

[1]
https://github.com/imagej/imagej-updater/commit/49f280fffa3593c6ddbf20071ce3c634fd8d9822

[2]
http://jenkins.imagej.net/job/ImageJ-updater/lastSuccessfulBuild/artifact/target/imagej-updater-0.7.1-SNAPSHOT.jar

On Mon, Feb 9, 2015 at 7:06 AM, Tim Schäfer <[hidden email]> wrote:

> Hallo list,
>
>
> we are runnning ImageJ on a 64 bit Linux cluster:
> user@clusterhead:~> uname -a
> Linux clusterhead 3.11.10-21-default #1 SMP Mon Jul 21 15:28:46 UTC 2014
> (9a9565d) x86_64 x86_64 x86_64 GNU/Linux
>
> ImageJ version info:
> ImageJ launcher 3.1.6 (build 1183)
>
> We are using ImageJ from the Fiji distribution (I hope this is the correct
> mailing list then?) in headless mode, but it crashes with the following
> error
> (command line included):
>
>
> ================================== START OF OUTPUT
> ============================
> user@clusterhead:~> /develop/Fiji.app/ImageJ-linux64 -batch
> No GUI detected.  Falling back to headless mode.
> No GUI detected.  Falling back to headless mode.
> log4j:WARN No appenders could be found for logger
> (org.bushe.swing.event.EventService).
> log4j:WARN Please initialize the log4j system properly.
> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
> more
> info.
> Feb 9, 2015 1:51:19 PM java.util.prefs.FileSystemPreferences$2 run
> INFO: Created user preferences directory.
> [ERROR] Module threw exception
> java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
>         at
> net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:289)
>         at
> net.imagej.ui.swing.updater.ImageJUpdater.run(ImageJUpdater.java:129)
>         at org.scijava.command.CommandModule.run(CommandModule.java:201)
>         at org.scijava.module.ModuleRunner.run(ModuleRunner.java:167)
>         at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
>         at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
>         at
>
> org.scijava.thread.DefaultThreadService$2.call(DefaultThreadService.java:164)
>         at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.reflect.InvocationTargetException
>         at java.awt.EventQueue.invokeAndWait(EventQueue.java:1043)
>         at
> javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1326)
>         at
> net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:285)
>         ... 11 more
> Caused by: java.awt.HeadlessException
>         at
> java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
>         at java.awt.Window.<init>(Window.java:432)
>         at java.awt.Frame.<init>(Frame.java:403)
>         at javax.swing.JFrame.<init>(JFrame.java:202)
>         at
> net.imagej.ui.swing.updater.UpdaterFrame.<init>(UpdaterFrame.java:141)
>         at
> net.imagej.ui.swing.updater.ImageJUpdater$1.run(ImageJUpdater.java:132)
>         at
> java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
>         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
>         at java.awt.EventQueue.access$000(EventQueue.java:85)
>         at java.awt.EventQueue$1.run(EventQueue.java:603)
>         at java.awt.EventQueue$1.run(EventQueue.java:601)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
>
> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
>         at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
>         at
>
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>         at
>
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>         at
>
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
>         at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
>         at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
>         at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
> ^Cuser@clusterhead:~>
> ================================== END OF OUTPUT
> ============================
>
> It seems to me that the updater is started, which tries to create a GUI,
> resulting in the crash, but I am not sure.
>
> Is there any way to prevent this? It would be OK to suppress the updater
> completely, we do not want it to
> update ImageJ anyway.
>
> If you need more system info, please ask and I will provide it ASAP.
>
>
> Thanks for any advice,
>
> --
> Tim
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Running imageJ headless on a cluster in batch mode

Tim Schäfer
Thanks a lot, Curtis.

I will be on travels for a few days, but I will check it as soon as I can and
report back to you.

Greetings,


Tim Schäfer



> On February 10, 2015 at 11:33 PM Curtis Rueden <[hidden email]> wrote:
>
>
> Hi Tim,
>
> > It seems to me that the updater is started, which tries to
> > create a GUI, resulting in the crash, but I am not sure.
>
> Thanks for the report. Your analysis looks correct -- this is a bug in
> ImageJ2's Updater.
>
> I pushed a potential bug-fix [1]. Could you please test it?
>
> - Download the new version [2]
> - Delete your ImageJ installation's jars/imagej-updater-0.7.0.jar
> - Put the downloaded JAR there instead
> - Try your headless workflow again
> - Let me know how it goes!
>
> Thanks,
> Curtis
>
> [1]
> https://github.com/imagej/imagej-updater/commit/49f280fffa3593c6ddbf20071ce3c634fd8d9822
>
> [2]
> http://jenkins.imagej.net/job/ImageJ-updater/lastSuccessfulBuild/artifact/target/imagej-updater-0.7.1-SNAPSHOT.jar
>
> On Mon, Feb 9, 2015 at 7:06 AM, Tim Schäfer <[hidden email]> wrote:
>
> > Hallo list,
> >
> >
> > we are runnning ImageJ on a 64 bit Linux cluster:
> > user@clusterhead:~> uname -a
> > Linux clusterhead 3.11.10-21-default #1 SMP Mon Jul 21 15:28:46 UTC 2014
> > (9a9565d) x86_64 x86_64 x86_64 GNU/Linux
> >
> > ImageJ version info:
> > ImageJ launcher 3.1.6 (build 1183)
> >
> > We are using ImageJ from the Fiji distribution (I hope this is the correct
> > mailing list then?) in headless mode, but it crashes with the following
> > error
> > (command line included):
> >
> >
> > ================================== START OF OUTPUT
> > ============================
> > user@clusterhead:~> /develop/Fiji.app/ImageJ-linux64 -batch
> > No GUI detected.  Falling back to headless mode.
> > No GUI detected.  Falling back to headless mode.
> > log4j:WARN No appenders could be found for logger
> > (org.bushe.swing.event.EventService).
> > log4j:WARN Please initialize the log4j system properly.
> > log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
> > more
> > info.
> > Feb 9, 2015 1:51:19 PM java.util.prefs.FileSystemPreferences$2 run
> > INFO: Created user preferences directory.
> > [ERROR] Module threw exception
> > java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
> >         at
> > net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:289)
> >         at
> > net.imagej.ui.swing.updater.ImageJUpdater.run(ImageJUpdater.java:129)
> >         at org.scijava.command.CommandModule.run(CommandModule.java:201)
> >         at org.scijava.module.ModuleRunner.run(ModuleRunner.java:167)
> >         at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
> >         at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
> >         at
> >
> > org.scijava.thread.DefaultThreadService$2.call(DefaultThreadService.java:164)
> >         at
> > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >         at
> >
> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> >         at
> >
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> >         at java.lang.Thread.run(Thread.java:662)
> > Caused by: java.lang.reflect.InvocationTargetException
> >         at java.awt.EventQueue.invokeAndWait(EventQueue.java:1043)
> >         at
> > javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1326)
> >         at
> > net.imagej.ui.swing.updater.SwingTools.invokeOnEDT(SwingTools.java:285)
> >         ... 11 more
> > Caused by: java.awt.HeadlessException
> >         at
> > java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
> >         at java.awt.Window.<init>(Window.java:432)
> >         at java.awt.Frame.<init>(Frame.java:403)
> >         at javax.swing.JFrame.<init>(JFrame.java:202)
> >         at
> > net.imagej.ui.swing.updater.UpdaterFrame.<init>(UpdaterFrame.java:141)
> >         at
> > net.imagej.ui.swing.updater.ImageJUpdater$1.run(ImageJUpdater.java:132)
> >         at
> > java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
> >         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
> >         at java.awt.EventQueue.access$000(EventQueue.java:85)
> >         at java.awt.EventQueue$1.run(EventQueue.java:603)
> >         at java.awt.EventQueue$1.run(EventQueue.java:601)
> >         at java.security.AccessController.doPrivileged(Native Method)
> >         at
> >
> > java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
> >         at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
> >         at
> >
> > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
> >         at
> >
> > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
> >         at
> >
> > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
> >         at
> > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
> >         at
> > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
> >         at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
> > ^Cuser@clusterhead:~>
> > ================================== END OF OUTPUT
> > ============================
> >
> > It seems to me that the updater is started, which tries to create a GUI,
> > resulting in the crash, but I am not sure.
> >
> > Is there any way to prevent this? It would be OK to suppress the updater
> > completely, we do not want it to
> > update ImageJ anyway.
> >
> > If you need more system info, please ask and I will provide it ASAP.
> >
> >
> > Thanks for any advice,
> >
> > --
> > Tim
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
Tim
0176 84273709

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html