devinbost commented on issue #6054:
URL: https://github.com/apache/pulsar/issues/6054#issuecomment-843541155


   I dropped some timestamps into 
`ManagedLedgerImpl.updateLedgersIdsComplete(..)`, and I'm not seeing anything 
glaring yet. Adding logs like this:
   
   ```
       public synchronized void updateLedgersIdsComplete(Stat stat) {
           STATE_UPDATER.set(this, State.LedgerOpened);
           lastLedgerCreatedTimestamp = clock.millis();
   
           if (log.isDebugEnabled()) {
               log.debug("[{}] Resending {} pending messages", name, 
pendingAddEntries.size());
           }
   
           // Avoid use same OpAddEntry between different ledger handle
           long priorNano = System.nanoTime();
           int pendingSize = pendingAddEntries.size();
           OpAddEntry existsOp;
           do {
               log.debug("updateLedgersIdsComplete 1. Nanoseconds is: {}", 
System.nanoTime() - priorNano);
               priorNano = System.nanoTime();
               existsOp = pendingAddEntries.poll();
               //log.debug("In ManagedLedgerImpl.updateLedgersIdsComplete(..), 
we're processing OpAddEntry {}",
               //        existsOp != null ? existsOp.toString() : null);
               if (existsOp != null) {
                   // If op is used by another ledger handle, we need to close 
it and create a new one
                   if (existsOp.ledger != null) {
                       log.debug("updateLedgersIdsComplete 2. Nanoseconds is: 
{}", System.nanoTime() - priorNano);
                       priorNano = System.nanoTime();
                       existsOp.close();
                       log.debug("updateLedgersIdsComplete 3. Nanoseconds is: 
{}", System.nanoTime() - priorNano);
                       priorNano = System.nanoTime();
                       existsOp = OpAddEntry.create(existsOp.ml, existsOp.data, 
existsOp.getNumberOfMessages(), existsOp.callback, existsOp.ctx);
                       log.debug("updateLedgersIdsComplete 4. Nanoseconds is: 
{}", System.nanoTime() - priorNano);
                       priorNano = System.nanoTime();
                   }
                   existsOp.setLedger(currentLedger);
                   log.debug("updateLedgersIdsComplete 5. Nanoseconds is: {}", 
System.nanoTime() - priorNano);
                   priorNano = System.nanoTime();
                   if (beforeAddEntry(existsOp)) {
                       log.debug("updateLedgersIdsComplete 6. Nanoseconds is: 
{}", System.nanoTime() - priorNano);
                       priorNano = System.nanoTime();
                       pendingAddEntries.add(existsOp);
                       log.debug("updateLedgersIdsComplete 7. Nanoseconds is: 
{}", System.nanoTime() - priorNano);
                       priorNano = System.nanoTime();
                   }
               }
           } while (existsOp != null && --pendingSize > 0);
   
           // Process all the pending addEntry requests
           for (OpAddEntry op : pendingAddEntries) {
               //log.debug("In ManagedLedgerImpl.updateLedgersIdsComplete(..), 
processing list of pendingAddEntries, starting"
               //                + " with OpAddEntry {}",
               //        op != null ? op.toString() : null);
               log.debug("updateLedgersIdsComplete 8. Nanoseconds is: {}", 
System.nanoTime() - priorNano);
               priorNano = System.nanoTime();
               ++currentLedgerEntries;
               currentLedgerSize += op.data.readableBytes();
   
               if (log.isDebugEnabled()) {
                   log.debug("[{}] Sending {}", name, op);
               }
   
               if (currentLedgerIsFull()) {
                   log.debug("updateLedgersIdsComplete 9. Nanoseconds is: {}", 
System.nanoTime() - priorNano);
                   priorNano = System.nanoTime();
                   STATE_UPDATER.set(this, State.ClosingLedger);
                   op.setCloseWhenDone(true);
                   log.debug("updateLedgersIdsComplete 10. Nanoseconds is: {}", 
System.nanoTime() - priorNano);
                   priorNano = System.nanoTime();
                   op.initiate();
                   log.debug("updateLedgersIdsComplete 11. Nanoseconds is: {}", 
System.nanoTime() - priorNano);
                   if (log.isDebugEnabled()) {
                       log.debug("[{}] Stop writing into ledger {} queue={}", 
name, currentLedger.getId(),
                               pendingAddEntries.size());
                   }
                   break;
               } else {
                   op.initiate();
                   log.debug("updateLedgersIdsComplete 12. Nanoseconds is: {}", 
System.nanoTime() - priorNano);
               }
           }
       }
   ```
   gave this output (plus many thousand more similar lines):
   
   ```
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 2. Nanoseconds is: 246
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 3. Nanoseconds is: 35
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 4. Nanoseconds is: 335
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 5. Nanoseconds is: 31
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 6. Nanoseconds is: 29
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 7. Nanoseconds is: 64
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 1. Nanoseconds is: 24
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 2. Nanoseconds is: 292
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 3. Nanoseconds is: 34
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 4. Nanoseconds is: 401
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 5. Nanoseconds is: 31
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 6. Nanoseconds is: 29
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 7. Nanoseconds is: 82
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 1. Nanoseconds is: 23
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 2. Nanoseconds is: 234
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 3. Nanoseconds is: 101
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 4. Nanoseconds is: 447
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 5. Nanoseconds is: 31
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 6. Nanoseconds is: 29
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 7. Nanoseconds is: 60
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 1. Nanoseconds is: 24
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 2. Nanoseconds is: 176
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 3. Nanoseconds is: 123
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 4. Nanoseconds is: 362
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 5. Nanoseconds is: 31
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 6. Nanoseconds is: 32
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 7. Nanoseconds is: 88
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 1. Nanoseconds is: 25
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 2. Nanoseconds is: 236
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 3. Nanoseconds is: 123
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 4. Nanoseconds is: 353
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 5. Nanoseconds is: 32
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 6. Nanoseconds is: 29
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 7. Nanoseconds is: 58
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 1. Nanoseconds is: 25
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 2. Nanoseconds is: 233
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 3. Nanoseconds is: 36
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 4. Nanoseconds is: 739
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 5. Nanoseconds is: 29
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 6. Nanoseconds is: 29
   DEBUG org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - 
updateLedgersIdsComplete 7. Nanoseconds is: 90
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to