浏览代码

don't schedule a flush if there are no operations in the translog
this can happen with the 30m time base setting expires

Shay Banon 11 年之前
父节点
当前提交
abf68c472e
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      src/main/java/org/elasticsearch/index/translog/TranslogService.java

+ 6 - 1
src/main/java/org/elasticsearch/index/translog/TranslogService.java

@@ -145,8 +145,13 @@ public class TranslogService extends AbstractIndexShardComponent {
                 return;
             }
 
+            int currentNumberOfOperations = translog.estimatedNumberOfOperations();
+            if (currentNumberOfOperations == 0) {
+                reschedule();
+                return;
+            }
+
             if (flushThresholdOperations > 0) {
-                int currentNumberOfOperations = translog.estimatedNumberOfOperations();
                 if (currentNumberOfOperations > flushThresholdOperations) {
                     logger.trace("flushing translog, operations [{}], breached [{}]", currentNumberOfOperations, flushThresholdOperations);
                     asyncFlushAndReschedule();