-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Hi, Great work you put out here. I am having trouble with this. JavaFX initialization is being interrupted in the headless Docker environment.
The CountDownLatch waiting for JavaFX to start is being interrupted.
This blocks IB Gateway from completing login.
More research says its a known issue with IBGA in Live Trading mode when JavaFX initializes in a headless X11 environment. The error occurs during PlatformImpl.waitForStart(), which prevents the GUI from fully initializing.
This is why login gets stuck at 44% — JavaFX can't complete initialization, so the main window never appears, and IBGA keeps waiting for it. any help will be appreciated.
Just a note that paper trading works so the issue is live trading specific
java.lang.InterruptedException
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1048)
at java.base/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.waitForStart(PlatformImpl.java:419)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:440)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:431)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.checkIdle(PlatformImpl.java:549)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.setImplicitExit(PlatformImpl.java:503)
at javafx.graphics/javafx.application.Platform.setImplicitExit(Platform.java:239)
at twslaunch.gstat.j.a(j.java:88)
at twslaunch.gstat.a.d(a.java:219)
at twslaunch.gstat.a.lambda$start$1(a.java:121)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)