Crearns opened a new issue #1876: Broker flush when END_OF_FILE
URL: https://github.com/apache/rocketmq/issues/1876
 
 
   in CommitLog.java 
   when `msgLen + END_FILE_MIN_BLANK_LENGTH) > maxBlank`, it will put the 
totalsize, magiccode to mark the blank
   ```java
   
   if ((msgLen + END_FILE_MIN_BLANK_LENGTH) > maxBlank) {
                   this.resetByteBuffer(this.msgStoreItemMemory, maxBlank);
                   // 1 TOTALSIZE
                   this.msgStoreItemMemory.putInt(maxBlank);
                   // 2 MAGICCODE
                   this.msgStoreItemMemory.putInt(CommitLog.BLANK_MAGIC_CODE);
                   // 3 The remaining space may be any value
                   // Here the length of the specially set maxBlank
                   final long beginTimeMills = 
CommitLog.this.defaultMessageStore.now();
                   byteBuffer.put(this.msgStoreItemMemory.array(), 0, maxBlank);
                   return new 
AppendMessageResult(AppendMessageStatus.END_OF_FILE, wroteOffset, maxBlank, 
msgId, msgInner.getStoreTimestamp(),
                       queueOffset, CommitLog.this.defaultMessageStore.now() - 
beginTimeMills);
   }
   ```
   
   when parse the result 
   ```java
   case END_OF_FILE:
            unlockMappedFile = mappedFile;
            // Create a new file, re-write the message
           mappedFile = this.mappedFileQueue.getLastMappedFile(0);
           if (null == mappedFile) {
           // XXX: warn and notify me
           log.error("create mapped file2 error, topic: " + msg.getTopic() + " 
clientAddr: " + msg.getBornHostString());
           beginTimeInLock = 0;
                   return new 
PutMessageResult(PutMessageStatus.CREATE_MAPEDFILE_FAILED, result);
           }
           result = mappedFile.appendMessage(msg, this.appendMessageCallback);
           break;
   ```
   it will create a new file, put the message and flush it, but the data that 
mark the blank will not flush, how to deal with it?
   

----------------------------------------------------------------
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]


With regards,
Apache Git Services

Reply via email to