Uploaded image for project: 'ZooKeeper'
  1. ZooKeeper
  2. ZOOKEEPER-954

Findbugs/ClientCnxn: Bug type JLM_JSR166_UTILCONCURRENT_MONITORENTER

Log workAgile BoardRank to TopRank to BottomAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsAdd voteVotersWatch issueWatchersCreate sub-taskConvert to sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Patch Available
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • java client
    • None

    Description

      JLM Synchronization performed on java.util.concurrent.LinkedBlockingQueue in org.apache.zookeeper.ClientCnxn$EventThread.queuePacket(ClientCnxn$Packet)

      Bug type JLM_JSR166_UTILCONCURRENT_MONITORENTER (click for details)
      In class org.apache.zookeeper.ClientCnxn$EventThread
      In method org.apache.zookeeper.ClientCnxn$EventThread.queuePacket(ClientCnxn$Packet)
      Type java.util.concurrent.LinkedBlockingQueue
      Value loaded from field org.apache.zookeeper.ClientCnxn$EventThread.waitingEvents
      At ClientCnxn.java:[line 411]
      JLM Synchronization performed on java.util.concurrent.LinkedBlockingQueue in org.apache.zookeeper.ClientCnxn$EventThread.run()

      Bug type JLM_JSR166_UTILCONCURRENT_MONITORENTER (click for details)
      In class org.apache.zookeeper.ClientCnxn$EventThread
      In method org.apache.zookeeper.ClientCnxn$EventThread.run()
      Type java.util.concurrent.LinkedBlockingQueue
      Value loaded from field org.apache.zookeeper.ClientCnxn$EventThread.waitingEvents
      At ClientCnxn.java:[line 436]

      The respective code:

      409 public void queuePacket(Packet packet) {
      410 if (wasKilled) {
      411 synchronized (waitingEvents)

      { 412 if (isRunning) waitingEvents.add(packet); 413 else processEvent(packet); 414 }

      415 } else

      { 416 waitingEvents.add(packet); 417 }

      418 }
      419
      420 public void queueEventOfDeath()

      { 421 waitingEvents.add(eventOfDeath); 422 }

      423
      424 @Override
      425 public void run() {
      426 try {
      427 isRunning = true;
      428 while (true) {
      429 Object event = waitingEvents.take();
      430 if (event == eventOfDeath)

      { 431 wasKilled = true; 432 }

      else

      { 433 processEvent(event); 434 }

      435 if (wasKilled)
      436 synchronized (waitingEvents) {
      437 if (waitingEvents.isEmpty())

      { 438 isRunning = false; 439 break; 440 }

      441 }
      442 }

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            ikeda Hiroshi Ikeda Assign to me
            thkoch Thomas Koch

            Dates

              Created:
              Updated:

              Slack

                Issue deployment