possible threading issue in photon client

6 messages Options
Embed this post
Permalink
stinger

possible threading issue in photon client

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
I've run into an issue with the photon client that seems to be thread related and wanted to pass it by the mailing list to see if anybody is having a similar problem.  I'm using 1.0.0 of the client & ors.  I start up the photon client, and then using the orderloader command line tool, I load anywhere between 1400 - 2800 orders into the system.  These load up fine and show up in the photon client.  As a test, I then hit the "cancel all open orders" button.  When I do this, the UI freezes - I assume this is because the process that is running the cancel is running on the SWT display thread?  When the cancel is finally completed, the UI refreshes and then immediately freezes again - it then never refreshes and has to manually be killed.  I believe it is freezing in org.eclipse.ui.console.IOConsoleOutputStream.streamAppeneded method (see stack trace below).  While I believe that this is a problem with the eclipse framework being used, I also think that running the cancel process on another thread may solve the problem?  Anyway, just wondering if anybody else has run into this problem?  Any possible workarounds?

Here's a stack trace when the photon client is hung:

2009-02-10 12:00:08
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.2-b01 mixed mode):

"SocketConnector-0" daemon prio=10 tid=0x000000004e434400 nid=0x6ebe runnable [0x0000000040c61000..0x0000000040c61c10]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
    - locked <0x00002aaad5b6b108> (a sun.nio.ch.Util$1)
    - locked <0x00002aaad5b6b0f0> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00002aaad5b6ad78> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
    at org.apache.mina.transport.socket.nio.SocketConnector$Worker.run(SocketConnector.java:389)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:43)
    at java.lang.Thread.run(Thread.java:619)

"ActiveMQ Transport: tcp://scfadel03/10.106.79.58:61616" prio=10 tid=0x00002aaae59ce400 nid=0x6eb2 runnable [0x0000000040684000..0x0000000040684a10]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)
    at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)
    at java.io.DataInputStream.readInt(DataInputStream.java:370)
    at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
    at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:203)
    at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:195)
    at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
    at java.lang.Thread.run(Thread.java:619)

"ActiveMQ Session: ID:dcfalen02-59357-1234288451788-0:1:1" prio=10 tid=0x000000004f5b7000 nid=0x6e6e in Object.wait() [0x0000000040785000..0x0000000040785c10]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaac1a4e7c0> (a java.lang.Object)
    at java.lang.Object.wait(Object.java:485)
    at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:105)
    - locked <0x00002aaac1a4e7c0> (a java.lang.Object)
    at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36)

"ActiveMQ Transport: tcp://scfadel03/10.106.79.58:61616" prio=10 tid=0x000000004f35d800 nid=0x6e6c runnable [0x0000000044385000..0x0000000044385b10]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)
    at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)
    at java.io.DataInputStream.readInt(DataInputStream.java:370)
    at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
    at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:203)
    at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:195)
    at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
    at java.lang.Thread.run(Thread.java:619)

"ActiveMQ Session: ID:dcfalen02-59357-1234288451788-0:0:1" prio=10 tid=0x000000004f5b8800 nid=0x6e6b in Object.wait() [0x0000000044486000..0x0000000044486a90]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaac19f5760> (a java.lang.Object)
    at java.lang.Object.wait(Object.java:485)
    at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:105)
    - locked <0x00002aaac19f5760> (a java.lang.Object)
    at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36)

"InactivityMonitor WriteCheck" daemon prio=10 tid=0x00002aaae4145c00 nid=0x6e69 in Object.wait() [0x0000000044284000..0x0000000044284d90]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaac1a4e608> (a java.util.TaskQueue)
    at java.util.TimerThread.mainLoop(Timer.java:509)
    - locked <0x00002aaac1a4e608> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:462)

"InactivityMonitor ReadCheck" daemon prio=10 tid=0x00002aaae4e0f000 nid=0x6e68 in Object.wait() [0x0000000044183000..0x0000000044183d10]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaac1a4e628> (a java.util.TaskQueue)
    at java.util.TimerThread.mainLoop(Timer.java:509)
    - locked <0x00002aaac1a4e628> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:462)

"ActiveMQ Transport: tcp://scfadel03/10.106.79.58:61616" prio=10 tid=0x000000004e5e4c00 nid=0x6e67 runnable [0x00000000417e2000..0x00000000417e2c90]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)
    at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)
    at java.io.DataInputStream.readInt(DataInputStream.java:370)
    at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
    at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:203)
    at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:195)
    at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
    at java.lang.Thread.run(Thread.java:619)

"QFJ Message Processor" daemon prio=10 tid=0x00002aaae5891000 nid=0x6e5b waiting on condition [0x0000000040583000..0x0000000040583a90]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00002aaac3c072f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963)
    at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:395)
    at quickfix.mina.SingleThreadedEventHandlingStrategy.getMessage(SingleThreadedEventHandlingStrategy.java:79)
    at quickfix.mina.SingleThreadedEventHandlingStrategy.block(SingleThreadedEventHandlingStrategy.java:68)
    at quickfix.mina.SingleThreadedEventHandlingStrategy$1.run(SingleThreadedEventHandlingStrategy.java:86)
    at java.lang.Thread.run(Thread.java:619)

"QFJ Timer" daemon prio=10 tid=0x00002aaae5890800 nid=0x6e5a waiting on condition [0x0000000044082000..0x0000000044082a10]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00002aaac3c08940> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963)
    at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:583)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:576)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:619)

"Ruby indexing" daemon prio=10 tid=0x000000004e4ea400 nid=0x6e55 in Object.wait() [0x0000000040a5f000..0x0000000040a5fb90]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabf89cbd8> (a org.rubypeople.rdt.internal.core.search.indexing.IndexManager)
    at java.lang.Object.wait(Object.java:485)
    at org.rubypeople.rdt.internal.core.search.processing.JobManager.run(JobManager.java:350)
    - locked <0x00002aaabf89cbd8> (a org.rubypeople.rdt.internal.core.search.indexing.IndexManager)
    at java.lang.Thread.run(Thread.java:619)

"Worker-2" prio=10 tid=0x000000004e601c00 nid=0x6e54 in Object.wait() [0x000000004095e000..0x000000004095eb10]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabe37dc30> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
    - locked <0x00002aaabe37dc30> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-1" prio=10 tid=0x00002aaae58e8800 nid=0x6e53 in Object.wait() [0x0000000040242000..0x0000000040242a90]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabe37dc30> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
    - locked <0x00002aaabe37dc30> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"ClockUpdateTimer" prio=10 tid=0x00002aaae5192000 nid=0x6e4d in Object.wait() [0x0000000041f7c000..0x0000000041f7ca10]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabed1a430> (a java.util.TaskQueue)
    at java.util.TimerThread.mainLoop(Timer.java:509)
    - locked <0x00002aaabed1a430> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:462)

"Start Level Event Dispatcher" daemon prio=10 tid=0x00002aaae410ec00 nid=0x6e49 in Object.wait() [0x0000000041d7a000..0x0000000041d7ac10]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabe3e1300> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:377)
    - locked <0x00002aaabe3e1300> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:317)

"Framework Event Dispatcher" daemon prio=10 tid=0x00002aaae4107800 nid=0x6e48 in Object.wait() [0x0000000041a85000..0x0000000041a85b90]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabe3e1c78> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:377)
    - locked <0x00002aaabe3e1c78> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:317)

"State Data Manager" daemon prio=10 tid=0x00002aaae40f5400 nid=0x6e47 waiting on condition [0x0000000041984000..0x0000000041984b10]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:297)
    at java.lang.Thread.run(Thread.java:619)

"Low Memory Detector" daemon prio=10 tid=0x000000004d8d7c00 nid=0x6e45 runnable [0x0000000000000000..0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread1" daemon prio=10 tid=0x000000004d8d5000 nid=0x6e44 waiting on condition [0x0000000000000000..0x00000000413dd620]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x000000004d8d1000 nid=0x6e43 waiting on condition [0x0000000000000000..0x00000000412dc5a0]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x000000004d8cf000 nid=0x6e42 runnable [0x0000000000000000..0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0x000000004d8ab800 nid=0x6e41 in Object.wait() [0x00000000410db000..0x00000000410dbc10]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabe390868> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
    - locked <0x00002aaabe390868> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x000000004d8a9c00 nid=0x6e40 in Object.wait() [0x0000000040fda000..0x0000000040fdab90]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabe3907f0> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <0x00002aaabe3907f0> (a java.lang.ref.Reference$Lock)

"main" prio=10 tid=0x000000004d843800 nid=0x6e3c in Object.wait() [0x0000000041c78000..0x0000000041c79ed0]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002aaabf7fb9d0> (a java.util.ArrayList)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.ui.internal.console.IOConsolePartitioner.streamAppended(IOConsolePartitioner.java:463)
    - locked <0x00002aaabf7fb9d0> (a java.util.ArrayList)
    at org.eclipse.ui.console.IOConsoleOutputStream.notifyParitioner(IOConsoleOutputStream.java:245)
    at org.eclipse.ui.console.IOConsoleOutputStream.encodedWrite(IOConsoleOutputStream.java:240)
    at org.eclipse.ui.console.IOConsoleOutputStream.write(IOConsoleOutputStream.java:225)
    - locked <0x00002aaabf7fb988> (a org.eclipse.ui.console.MessageConsoleStream)
    at org.eclipse.ui.console.MessageConsoleStream.print(MessageConsoleStream.java:56)
    at org.eclipse.ui.console.MessageConsoleStream.println(MessageConsoleStream.java:81)
    at org.marketcetera.photon.PhotonConsoleAppender$1.run(PhotonConsoleAppender.java:107)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
    - locked <0x00002aaadbfa75c8> (a org.eclipse.swt.widgets.RunnableLock)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.marketcetera.photon.Application.start(Application.java:29)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    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.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

"VM Thread" prio=10 tid=0x000000004d8a4400 nid=0x6e3f runnable

"GC task thread#0 (ParallelGC)" prio=10 tid=0x000000004d84e000 nid=0x6e3d runnable

"GC task thread#1 (ParallelGC)" prio=10 tid=0x000000004d84fc00 nid=0x6e3e runnable

"VM Periodic Task Thread" prio=10 tid=0x000000004d8d9c00 nid=0x6e46 waiting on condition

JNI global references: 901

Heap
 PSYoungGen      total 116480K, used 73153K [0x00002aaad3760000, 0x00002aaaddf40000, 0x00002aaade200000)
  eden space 60672K, 62% used [0x00002aaad3760000,0x00002aaad5c22b88,0x00002aaad72a0000)
  from space 55808K, 63% used [0x00002aaada8a0000,0x00002aaadcb4da20,0x00002aaaddf20000)
  to   space 55296K, 0% used [0x00002aaad72a0000,0x00002aaad72a0000,0x00002aaada8a0000)
 PSOldGen        total 237504K, used 193031K [0x00002aaabe200000, 0x00002aaacc9f0000, 0x00002aaad3760000)
  object space 237504K, 81% used [0x00002aaabe200000,0x00002aaac9e81fe0,0x00002aaacc9f0000)
 PSPermGen       total 137728K, used 94400K [0x00002aaaae200000, 0x00002aaab6880000, 0x00002aaabe200000)
  object space 137728K, 68% used [0x00002aaaae200000,0x00002aaab3e301d8,0x00002aaab6880000)




_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org
toli

Re: possible threading issue in photon client

Reply Threaded More More options
Print post
Permalink
Han,

Thanks for reporting this. I've seen the slowdown, and we filed it
internally, but I haven't experienced the full-out freeze like you
have.

I've filed a bug at https://www.marketcetera.org/jira/browse/PN-395 so
that you can track it.

Unfortunately, I don't think there's an easy way to work around this
issue right now.

--
Toli Kuznets
http://www.marketcetera.com: Open-Source Trading Platform
download.run.trade.

_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org
Will Horn

Re: possible threading issue in photon client

Reply Threaded More More options
Print post
Permalink
Hi Han,

I've reproduced this and you are correct in your analysis.  There are actually two issues here.  The first is that the "cancel all open orders" operation should be performed in a background thread to provide a more responsive UI while it is running.  The second is more general and more severe, that the entire application will hang when the Eclipse console is overloaded.  This is a "feature" of Eclipse and the javadocs for IOConsoleOutputStream explain that excessive logging should not be performed in the UI thread to avoid this.  Photon needs to be changed to do logging in a background thread as well.

We can use the bug Toli reported to track the first issue.  Would you mind creating one for the second issue (https://www.marketcetera.org/jira/secure/CreateIssue!default.jspa) and attaching your stack trace to it?

Thanks again for reporting this.

-Will

On Tue, Feb 10, 2009 at 11:32 AM, Toli Kuznets <[hidden email]> wrote:
Han,

Thanks for reporting this. I've seen the slowdown, and we filed it
internally, but I haven't experienced the full-out freeze like you
have.

I've filed a bug at https://www.marketcetera.org/jira/browse/PN-395 so
that you can track it.

Unfortunately, I don't think there's an easy way to work around this
issue right now.

--
Toli Kuznets
http://www.marketcetera.com: Open-Source Trading Platform
download.run.trade.

_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org


_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org
stinger

Re: possible threading issue in photon client

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Thanks Will - I've opened up a ticket.  When do you think this issue will be resolved?  This seems to be a critical problem with the client.

thanks,
Han


From: Will Horn <[hidden email]>
To: Toli Kuznets <[hidden email]>
Cc: Han Tunca <[hidden email]>; [hidden email]
Sent: Tuesday, February 10, 2009 1:52:46 PM
Subject: Re: [m-etc-dev] possible threading issue in photon client

Hi Han,

I've reproduced this and you are correct in your analysis.  There are actually two issues here.  The first is that the "cancel all open orders" operation should be performed in a background thread to provide a more responsive UI while it is running.  The second is more general and more severe, that the entire application will hang when the Eclipse console is overloaded.  This is a "feature" of Eclipse and the javadocs for IOConsoleOutputStream explain that excessive logging should not be performed in the UI thread to avoid this.  Photon needs to be changed to do logging in a background thread as well.

We can use the bug Toli reported to track the first issue.  Would you mind creating one for the second issue (https://www.marketcetera.org/jira/secure/CreateIssue!default.jspa) and attaching your stack trace to it?

Thanks again for reporting this.

-Will

On Tue, Feb 10, 2009 at 11:32 AM, Toli Kuznets <[hidden email]> wrote:
Han,

Thanks for reporting this. I've seen the slowdown, and we filed it
internally, but I haven't experienced the full-out freeze like you
have.

I've filed a bug at https://www.marketcetera.org/jira/browse/PN-395 so
that you can track it.

Unfortunately, I don't think there's an easy way to work around this
issue right now.

--
Toli Kuznets
http://www.marketcetera.com: Open-Source Trading Platform
download.run.trade.

_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org


_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org
Will Horn

Re: possible threading issue in photon client

Reply Threaded More More options
Print post
Permalink
Thanks for opening the ticket.  Does changing the Photon console log level (Edit->Preferences\Photon) to "Error" prevent the hang for you? I believe the messages that are overloading the console are at the Info level.

-Will

On Tue, Feb 10, 2009 at 12:15 PM, Han Tunca <[hidden email]> wrote:
Thanks Will - I've opened up a ticket.  When do you think this issue will be resolved?  This seems to be a critical problem with the client.

thanks,
Han


From: Will Horn <[hidden email]>
To: Toli Kuznets <[hidden email]>
Cc: Han Tunca <[hidden email]>; [hidden email]
Sent: Tuesday, February 10, 2009 1:52:46 PM
Subject: Re: [m-etc-dev] possible threading issue in photon client

Hi Han,

I've reproduced this and you are correct in your analysis.  There are actually two issues here.  The first is that the "cancel all open orders" operation should be performed in a background thread to provide a more responsive UI while it is running.  The second is more general and more severe, that the entire application will hang when the Eclipse console is overloaded.  This is a "feature" of Eclipse and the javadocs for IOConsoleOutputStream explain that excessive logging should not be performed in the UI thread to avoid this.  Photon needs to be changed to do logging in a background thread as well.

We can use the bug Toli reported to track the first issue.  Would you mind creating one for the second issue (https://www.marketcetera.org/jira/secure/CreateIssue!default.jspa) and attaching your stack trace to it?

Thanks again for reporting this.

-Will

On Tue, Feb 10, 2009 at 11:32 AM, Toli Kuznets <[hidden email]> wrote:
Han,

Thanks for reporting this. I've seen the slowdown, and we filed it
internally, but I haven't experienced the full-out freeze like you
have.

I've filed a bug at https://www.marketcetera.org/jira/browse/PN-395 so
that you can track it.

Unfortunately, I don't think there's an easy way to work around this
issue right now.

--
Toli Kuznets
http://www.marketcetera.com: Open-Source Trading Platform
download.run.trade.

_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org



_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org
stinger

Re: possible threading issue in photon client

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Yes, changing the log level seems to work. 


From: Will Horn <[hidden email]>
To: Han Tunca <[hidden email]>
Cc: Toli Kuznets <[hidden email]>; [hidden email]
Sent: Tuesday, February 10, 2009 3:00:34 PM
Subject: Re: [m-etc-dev] possible threading issue in photon client

Thanks for opening the ticket.  Does changing the Photon console log level (Edit->Preferences\Photon) to "Error" prevent the hang for you? I believe the messages that are overloading the console are at the Info level.

-Will

On Tue, Feb 10, 2009 at 12:15 PM, Han Tunca <[hidden email]> wrote:
Thanks Will - I've opened up a ticket.  When do you think this issue will be resolved?  This seems to be a critical problem with the client.

thanks,
Han


From: Will Horn <[hidden email]>
To: Toli Kuznets <[hidden email]>
Cc: Han Tunca <[hidden email]>; [hidden email]
Sent: Tuesday, February 10, 2009 1:52:46 PM
Subject: Re: [m-etc-dev] possible threading issue in photon client

Hi Han,

I've reproduced this and you are correct in your analysis.  There are actually two issues here.  The first is that the "cancel all open orders" operation should be performed in a background thread to provide a more responsive UI while it is running.  The second is more general and more severe, that the entire application will hang when the Eclipse console is overloaded.  This is a "feature" of Eclipse and the javadocs for IOConsoleOutputStream explain that excessive logging should not be performed in the UI thread to avoid this.  Photon needs to be changed to do logging in a background thread as well.

We can use the bug Toli reported to track the first issue.  Would you mind creating one for the second issue (https://www.marketcetera.org/jira/secure/CreateIssue!default.jspa) and attaching your stack trace to it?

Thanks again for reporting this.

-Will

On Tue, Feb 10, 2009 at 11:32 AM, Toli Kuznets <[hidden email]> wrote:
Han,

Thanks for reporting this. I've seen the slowdown, and we filed it
internally, but I haven't experienced the full-out freeze like you
have.

I've filed a bug at https://www.marketcetera.org/jira/browse/PN-395 so
that you can track it.

Unfortunately, I don't think there's an easy way to work around this
issue right now.

--
Toli Kuznets
http://www.marketcetera.com: Open-Source Trading Platform
download.run.trade.

_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org



_______________________________________________
m-etc-dev mailing list
[hidden email]
http://lists.marketcetera.org/mailman/listinfo/m-etc-dev_lists.marketcetera.org