jihoonson commented on a change in pull request #6033: Synchronize scheduled
poll() calls in SQLMetadataRuleManager to prevent flakiness in
SqlMetadataRuleManagerTest
URL: https://github.com/apache/incubator-druid/pull/6033#discussion_r204518835
##########
File path: server/src/main/java/io/druid/metadata/SQLMetadataRuleManager.java
##########
@@ -142,13 +139,19 @@ public Void withHandle(Handle handle) throws Exception
private final AuditManager auditManager;
private final Object lock = new Object();
-
- private volatile boolean started = false;
-
- private volatile ListeningScheduledExecutorService exec = null;
- private volatile ListenableFuture<?> future = null;
-
- private volatile long retryStartTime = 0;
+ /** The number of times this SQLMetadataRuleManager was started. */
+ private long startCount = 0;
+ /**
+ * Equal to the current {@link #startCount} value, if the
SQLMetadataRuleManager is currently started; -1 if
+ * currently stopped.
+ *
+ * This field is used to implement a simple stamp mechanism instead of just
a boolean "started" flag to prevent
+ * the theoretical situation of two tasks scheduled in {@link #start()}
calling {@link #poll()} concurrently, if
+ * the sequence of {@link #start()} - {@link #stop()} - {@link #start()}
actions occurs quickly.
+ */
+ private long currentStartOrder = -1;
+ private ScheduledExecutorService exec = null;
+ private long retryStartTime = 0;
Review comment:
nit: looks that this can be a local variable.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on 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
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]