JPPF Issue Tracker
star_faded.png
Please log in to bookmark issues
bug_report_small.png
CLOSED  Bug report JPPF-428  -  Driver gets stuck when configured with local node on a machine with only 1 processor
Posted Dec 29, 2015 - updated Dec 30, 2015
icon_info.png This issue has been closed with status "Closed" and resolution "RESOLVED".
Issue details
  • Type of issue
    Bug report
  • Status
     
    Closed
  • Assigned to
     lolo4j
  • Progress
       
  • Type of bug
    Not triaged
  • Likelihood
    Not triaged
  • Effect
    Not triaged
  • Posted by
     lolo4j
  • Owned by
    Not owned by anyone
  • Category
    Server
  • Resolution
    RESOLVED
  • Priority
    Normal
  • Reproducability
    Always
  • Severity
    Normal
  • Targetted for
    icon_milestones.png JPPF 5.1.2
Issue description
When a driver is runniong on a machine that has a single processor and is configured with a local node and defaults values for the other properties, its single NIO thread ends up waiting endlessly for a class loading request from the local node, as visible in the thread's call stack:
"JPPF NIO-0001" - Thread t@23
java.lang.Thread.State: WAITING
  at java.lang.Object.wait(Native Method)
  - waiting on <5b69dbd3> (a org.jppf.utils.SimpleObjectLock)
  at java.lang.Object.wait(Object.java:503)
  at org.jppf.utils.ThreadSynchronization.goToSleep(ThreadSynchronization.java:38)
  at org.jppf.server.nio.classloader.LocalClassContext.readMessage(LocalClassContext.java:62)
  at org.jppf.server.nio.classloader.node.WaitingNodeRequestState.performTransition(WaitingNodeRequestState.java:78)
  at org.jppf.server.nio.classloader.node.WaitingNodeRequestState.performTransition(WaitingNodeRequestState.java:39)
  at org.jppf.nio.StateTransitionTask.run(StateTransitionTask.java:78)
  - locked <4f2fd227> (a org.jppf.classloader.LocalClassLoaderChannel)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  at java.util.concurrent.FutureTask.run(FutureTask.java:262)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  at java.lang.Thread.run(Thread.java:745)
 
Locked ownable synchronizers:
  - locked <17ccbdbe> (a java.util.concurrent.ThreadPoolExecutor$Worker)
A workaround is to ensure there is at least one more available NIO thread by setting this property:
jppf.transition.thread.pool.size = 2
Steps to reproduce this issue
1) One a single core machine start a driver with th e following configuration:
jppf.discovery.enabled = false
jppf.peer.discovery.enabled = false
jppf.local.node.enabled = true
jppf.jvm.options = -Xmx512m -Djava.util.logging.config.file=config/logging-driver.properties
2) try to connect with a JPPFClient, for instance an admin console

==> the client never finishes connecting, and looking at the driver's thread with VisualVM you can see the problem explained in the bug description

#3
Comment posted by
 lolo4j
Dec 30, 11:08
fixed in: