liyiwen3 opened a new issue #1716: There are obvious problems in 
"getAndCreateLastIndexFile" that is a method in IndexService.class 
URL: https://github.com/apache/rocketmq/issues/1716
 
 
   code like this
   `public IndexFile getAndCreateLastIndexFile() {
           IndexFile indexFile = null;
           IndexFile prevIndexFile = null;
           long lastUpdateEndPhyOffset = 0;
           long lastUpdateIndexTimestamp = 0;
   
           {
               this.readWriteLock.readLock().lock();
               if (!this.indexFileList.isEmpty()) {
                   IndexFile tmp = 
this.indexFileList.get(this.indexFileList.size() - 1);
                   if (!tmp.isWriteFull()) {
                       indexFile = tmp;
                   } else {
                       lastUpdateEndPhyOffset = tmp.getEndPhyOffset();
                       lastUpdateIndexTimestamp = tmp.getEndTimestamp();
                       prevIndexFile = tmp;
                   }
               }
   
               this.readWriteLock.readLock().unlock();
           }
   
           if (indexFile == null) {
               try {
                   String fileName =
                       this.storePath + File.separator
                           + 
UtilAll.timeMillisToHumanString(System.currentTimeMillis());
                   indexFile =
                       new IndexFile(fileName, this.hashSlotNum, this.indexNum, 
lastUpdateEndPhyOffset,
                           lastUpdateIndexTimestamp);
                   this.readWriteLock.writeLock().lock();
                   this.indexFileList.add(indexFile);
               } catch (Exception e) {
                   log.error("getLastIndexFile exception ", e);
               } finally {
                   this.readWriteLock.writeLock().unlock();
               }
   
               if (indexFile != null) {
                   final IndexFile flushThisFile = prevIndexFile;
                   Thread flushThread = new Thread(new Runnable() {
                       @Override
                       public void run() {
                           IndexService.this.flush(flushThisFile);
                       }
                   }, "FlushIndexFileThread");
   
                   flushThread.setDaemon(true);
                   flushThread.start();
               }
           }
   
           return indexFile;
       }`

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