diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java index 665f6923962f..e958de85da78 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java @@ -413,7 +413,7 @@ private AutoScalingConfig handleSuspendTrigger(SolrQueryRequest req, SolrQueryRe if (timeout != null) { try { int timeoutSeconds = parseHumanTime(timeout); - resumeTime = new Date(TimeUnit.MILLISECONDS.convert(timeSource.getTimeNs(), TimeUnit.NANOSECONDS) + resumeTime = new Date(TimeUnit.MILLISECONDS.convert(timeSource.getEpochTimeNs(), TimeUnit.NANOSECONDS) + TimeUnit.MILLISECONDS.convert(timeoutSeconds, TimeUnit.SECONDS)); } catch (IllegalArgumentException e) { op.addError("Invalid 'timeout' value for suspend trigger: " + triggerName); diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/IndexSizeTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/IndexSizeTrigger.java index eb0ce52eb54b..f0306b59b71e 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/IndexSizeTrigger.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/IndexSizeTrigger.java @@ -353,7 +353,7 @@ public void run() { return; } - long now = cloudManager.getTimeSource().getTimeNs(); + long now = cloudManager.getTimeSource().getEpochTimeNs(); // now check thresholds diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/MetricTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/MetricTrigger.java index 8c34c8b604cf..74a86ed0b485 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/MetricTrigger.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/MetricTrigger.java @@ -159,7 +159,7 @@ public void run() { values.forEach((tag, rate) -> rates.computeIfAbsent(node, s -> (Number) rate)); } - long now = cloudManager.getTimeSource().getTimeNs(); + long now = cloudManager.getTimeSource().getEpochTimeNs(); // check for exceeded rates and filter out those with less than waitFor from previous events Map hotNodes = rates.entrySet().stream() .filter(entry -> waitForElapsed(entry.getKey(), now, lastNodeEvent)) diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java index c404f0719b13..23c96fd97d15 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java @@ -93,7 +93,7 @@ public void init() throws Exception { if (lastLiveNodes.contains(n) && !nodeNameVsTimeAdded.containsKey(n)) { // since {@code #restoreState(AutoScaling.Trigger)} is called first, the timeAdded for a node may also be restored log.debug("Adding node from marker path: {}", n); - nodeNameVsTimeAdded.put(n, cloudManager.getTimeSource().getTimeNs()); + nodeNameVsTimeAdded.put(n, cloudManager.getTimeSource().getEpochTimeNs()); } }); } catch (NoSuchElementException e) { @@ -192,7 +192,7 @@ public void run() { Set copyOfNew = new HashSet<>(newLiveNodes); copyOfNew.removeAll(lastLiveNodes); copyOfNew.forEach(n -> { - long eventTime = cloudManager.getTimeSource().getTimeNs(); + long eventTime = cloudManager.getTimeSource().getEpochTimeNs(); log.debug("Tracking new node: {} at time {}", n, eventTime); nodeNameVsTimeAdded.put(n, eventTime); }); @@ -204,7 +204,7 @@ public void run() { Map.Entry entry = it.next(); String nodeName = entry.getKey(); Long timeAdded = entry.getValue(); - long now = cloudManager.getTimeSource().getTimeNs(); + long now = cloudManager.getTimeSource().getEpochTimeNs(); if (TimeUnit.SECONDS.convert(now - timeAdded, TimeUnit.NANOSECONDS) >= getWaitForSecond()) { nodeNames.add(nodeName); times.add(timeAdded); @@ -215,7 +215,7 @@ public void run() { if (processor != null) { if (log.isDebugEnabled()) { log.debug("NodeAddedTrigger {} firing registered processor for nodes: {} added at times {}, now={}", name, - nodeNames, times, cloudManager.getTimeSource().getTimeNs()); + nodeNames, times, cloudManager.getTimeSource().getEpochTimeNs()); } if (processor.process(new NodeAddedEvent(getEventType(), getName(), times, nodeNames, preferredOp, replicaType))) { // remove from tracking set only if the fire was accepted diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java index d0b467a73918..83cdc4b1ad2c 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java @@ -90,7 +90,7 @@ public void init() throws Exception { if (!lastLiveNodes.contains(n) && !nodeNameVsTimeRemoved.containsKey(n)) { // since {@code #restoreState(AutoScaling.Trigger)} is called first, the timeRemoved for a node may also be restored log.debug("Adding lost node from marker path: {}", n); - nodeNameVsTimeRemoved.put(n, cloudManager.getTimeSource().getTimeNs()); + nodeNameVsTimeRemoved.put(n, cloudManager.getTimeSource().getEpochTimeNs()); } }); } catch (NoSuchElementException e) { @@ -184,7 +184,7 @@ public void run() { copyOfLastLiveNodes.removeAll(newLiveNodes); copyOfLastLiveNodes.forEach(n -> { log.debug("Tracking lost node: {}", n); - nodeNameVsTimeRemoved.put(n, cloudManager.getTimeSource().getTimeNs()); + nodeNameVsTimeRemoved.put(n, cloudManager.getTimeSource().getEpochTimeNs()); }); // has enough time expired to trigger events for a node? @@ -194,7 +194,7 @@ public void run() { Map.Entry entry = it.next(); String nodeName = entry.getKey(); Long timeRemoved = entry.getValue(); - long now = cloudManager.getTimeSource().getTimeNs(); + long now = cloudManager.getTimeSource().getEpochTimeNs(); long te = TimeUnit.SECONDS.convert(now - timeRemoved, TimeUnit.NANOSECONDS); if (te >= getWaitForSecond()) { nodeNames.add(nodeName); diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTrigger.java index b48778d8cdc1..99c0c2aa5bce 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTrigger.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTrigger.java @@ -192,7 +192,7 @@ public void run() { } // Even though we are skipping the event, we need to notify any listeners of the IGNORED stage // so we create a dummy event with the ignored=true flag and ScheduledTriggers will do the rest - if (processor != null && processor.process(new ScheduledEvent(getEventType(), getName(), timeSource.getTimeNs(), + if (processor != null && processor.process(new ScheduledEvent(getEventType(), getName(), timeSource.getEpochTimeNs(), preferredOp, now.toEpochMilli(), true))) { lastRunAt = nextRunTime; return; @@ -204,7 +204,7 @@ public void run() { log.debug("ScheduledTrigger {} firing registered processor for scheduled time {}, now={}", name, nextRunTime, now); } - if (processor.process(new ScheduledEvent(getEventType(), getName(), timeSource.getTimeNs(), + if (processor.process(new ScheduledEvent(getEventType(), getName(), timeSource.getEpochTimeNs(), preferredOp, now.toEpochMilli()))) { lastRunAt = nextRunTime; // set to nextRunTime instead of now to avoid drift } diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/SearchRateTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/SearchRateTrigger.java index 03c61646a889..6e61541d4758 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/SearchRateTrigger.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/SearchRateTrigger.java @@ -405,7 +405,7 @@ public void run() { }); }); } - long now = cloudManager.getTimeSource().getTimeNs(); + long now = cloudManager.getTimeSource().getEpochTimeNs(); Map hotNodes = new HashMap<>(); Map coldNodes = new HashMap<>(); diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerEventQueue.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerEventQueue.java index 97ee9083a37b..4737337a9df2 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerEventQueue.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerEventQueue.java @@ -53,7 +53,7 @@ public TriggerEventQueue(SolrCloudManager cloudManager, String triggerName, Stat } public boolean offerEvent(TriggerEvent event) { - event.getProperties().put(ENQUEUE_TIME, timeSource.getTimeNs()); + event.getProperties().put(ENQUEUE_TIME, timeSource.getEpochTimeNs()); try { byte[] data = Utils.toJSON(event); delegate.offer(data); @@ -116,7 +116,7 @@ public TriggerEvent pollEvent() { private TriggerEvent fromMap(Map map) { TriggerEvent res = TriggerEvent.fromMap(map); - res.getProperties().put(DEQUEUE_TIME, timeSource.getTimeNs()); + res.getProperties().put(DEQUEUE_TIME, timeSource.getEpochTimeNs()); return res; } } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ExecutePlanActionTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ExecutePlanActionTest.java index 30aae7745190..e8d7caee4fc7 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ExecutePlanActionTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ExecutePlanActionTest.java @@ -183,7 +183,7 @@ public void setAsyncId(String asyncId) { List operations = Lists.asList(moveReplica, new CollectionAdminRequest.AsyncCollectionAdminRequest[]{mockRequest}); NodeLostTrigger.NodeLostEvent nodeLostEvent = new NodeLostTrigger.NodeLostEvent (TriggerEventType.NODELOST, "mock_trigger_name", - Collections.singletonList(cloudManager.getTimeSource().getTimeNs()), + Collections.singletonList(cloudManager.getTimeSource().getEpochTimeNs()), Collections.singletonList(sourceNodeName), CollectionParams.CollectionAction.MOVEREPLICA.toLower()); ActionContext actionContext = new ActionContext(survivor.getCoreContainer().getZkController().getSolrCloudManager(), null, diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerMixedBoundsTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerMixedBoundsTest.java index 11f258f6d9fa..fa7fcb3c78e2 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerMixedBoundsTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerMixedBoundsTest.java @@ -117,7 +117,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { List lst = listenerEvents.computeIfAbsent(config.name, s -> new ArrayList<>()); - CapturedEvent ev = new CapturedEvent(timeSource.getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message); log.info("=======> {}", ev); lst.add(ev); } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerSizeEstimationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerSizeEstimationTest.java index 628f0cc8e217..19bee6a610aa 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerSizeEstimationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerSizeEstimationTest.java @@ -119,7 +119,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { List lst = listenerEvents.computeIfAbsent(config.name, s -> new ArrayList<>()); - CapturedEvent ev = new CapturedEvent(timeSource.getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message); log.info("=======> {}", ev); lst.add(ev); } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java index 07119709bcca..23f04e66bdae 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java @@ -179,7 +179,7 @@ public void testTrigger() throws Exception { trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -244,7 +244,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { List lst = listenerEvents.computeIfAbsent(config.name, s -> new ArrayList<>()); - CapturedEvent ev = new CapturedEvent(timeSource.getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message); log.info("=======> {}", ev); lst.add(ev); } @@ -678,7 +678,7 @@ public void testSplitConfig() throws Exception { trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/MetricTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/MetricTriggerIntegrationTest.java index c189a9f2e226..537c5d0d78c4 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/MetricTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/MetricTriggerIntegrationTest.java @@ -154,7 +154,7 @@ public void testMetricTrigger() throws Exception { Thread.sleep(2000); assertEquals(listenerEvents.toString(), 4, listenerEvents.get("srt").size()); CapturedEvent ev = listenerEvents.get("srt").get(0); - long now = timeSource.getTimeNs(); + long now = timeSource.getEpochTimeNs(); // verify waitFor assertTrue(TimeUnit.SECONDS.convert(waitForSeconds, TimeUnit.NANOSECONDS) - WAIT_FOR_DELTA_NANOS <= now - ev.event.getEventTime()); assertEquals(collectionName, ev.event.getProperties().get("collection")); @@ -197,7 +197,7 @@ public void testMetricTrigger() throws Exception { Thread.sleep(2000); assertEquals(listenerEvents.toString(), 4, listenerEvents.get("srt").size()); ev = listenerEvents.get("srt").get(0); - now = timeSource.getTimeNs(); + now = timeSource.getEpochTimeNs(); // verify waitFor assertTrue(TimeUnit.SECONDS.convert(waitForSeconds, TimeUnit.NANOSECONDS) - WAIT_FOR_DELTA_NANOS <= now - ev.event.getEventTime()); assertEquals(collectionName, ev.event.getProperties().get("collection")); @@ -210,7 +210,7 @@ public static class MetricAction extends TriggerActionBase { @Override public void process(TriggerEvent event, ActionContext context) throws Exception { try { - long currentTimeNanos = context.getCloudManager().getTimeSource().getTimeNs(); + long currentTimeNanos = context.getCloudManager().getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -236,7 +236,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { List lst = listenerEvents.computeIfAbsent(config.name, s -> new ArrayList<>()); - lst.add(new CapturedEvent(timeSource.getTimeNs(), context, config, stage, actionName, event, message)); + lst.add(new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message)); } } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java index 0219449ad95f..e630fc8c5026 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java @@ -164,7 +164,7 @@ public void testNodeAddedTriggerRestoreState() throws Exception { // since we know the nodeAdded event has been detected, we can recored the current timestamp // (relative to the cluster's time source) and later assert that (restored state) correctly // tracked that the event happened prior to "now" - final long maxEventTimeNs = cloudManager.getTimeSource().getTimeNs(); + final long maxEventTimeNs = cloudManager.getTimeSource().getEpochTimeNs(); // // now replace the trigger with a new instance to test that the state gets copied over correctly @@ -282,7 +282,7 @@ public void process(TriggerEvent event, ActionContext actionContext) { try { if (triggerFired.compareAndSet(false, true)) { events.add(event); - long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getTimeNs(); + long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java index 9f8d0ba058b1..d3b1c54d4e59 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java @@ -97,7 +97,7 @@ public void testTrigger() throws Exception { trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = cloudManager.getTimeSource().getTimeNs(); + long currentTimeNanos = cloudManager.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -144,7 +144,7 @@ public void testTrigger() throws Exception { AtomicBoolean fired = new AtomicBoolean(false); trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { - long currentTimeNanos = cloudManager.getTimeSource().getTimeNs(); + long currentTimeNanos = cloudManager.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -295,7 +295,7 @@ public void testRestoreState() throws Exception { AtomicReference eventRef = new AtomicReference<>(); newTrigger.setProcessor(event -> { //the processor may get called 2 times, for newly added node and initial nodes - long currentTimeNanos = cloudManager.getTimeSource().getTimeNs(); + long currentTimeNanos = cloudManager.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java index bce299ff4671..e2f15b5927f3 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java @@ -180,7 +180,7 @@ public void testNodeLostTriggerRestoreState() throws Exception { // since we know the nodeLost event has been detected, we can recored the current timestamp // (relative to the cluster's time source) and later assert that (restored state) correctly // tracked that the event happened prior to "now" - final long maxEventTimeNs = cloudManager.getTimeSource().getTimeNs(); + final long maxEventTimeNs = cloudManager.getTimeSource().getEpochTimeNs(); // even though our trigger has detected a lost node, the *action* we registered should not have // been run yet, due to the large waitFor configuration... @@ -317,7 +317,7 @@ public void process(TriggerEvent event, ActionContext actionContext) { try { if (triggerFired.compareAndSet(false, true)) { events.add(event); - long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getTimeNs(); + long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java index edb3e0caef5b..16f42d9caee8 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java @@ -99,7 +99,7 @@ public void testTrigger() throws Exception { trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = cloudManager.getTimeSource().getTimeNs(); + long currentTimeNanos = cloudManager.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -151,7 +151,7 @@ public void testTrigger() throws Exception { trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = cloudManager.getTimeSource().getTimeNs(); + long currentTimeNanos = cloudManager.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitTime, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -346,7 +346,7 @@ public void testRestoreState() throws Exception { newTrigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = cloudManager.getTimeSource().getTimeNs(); + long currentTimeNanos = cloudManager.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java index 0cb6c2bf6c63..f2185c3ac51d 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java @@ -143,7 +143,7 @@ public void process(TriggerEvent event, ActionContext actionContext) { try { if (triggerFired.compareAndSet(false, true)) { events.add(event); - long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getTimeNs(); + long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java index 0f1f2615b039..2cffbe6876f7 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java @@ -183,7 +183,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { List lst = listenerEvents.computeIfAbsent(config.name, s -> new ArrayList<>()); - CapturedEvent ev = new CapturedEvent(timeSource.getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message); log.info("=======> {}", ev); lst.add(ev); } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java index 82737511d4d1..eabb36e69b60 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java @@ -237,7 +237,7 @@ public void testAboveSearchRate() throws Exception { assertNull(events.get(2).actionName); CapturedEvent ev = events.get(0); - long now = timeSource.getTimeNs(); + long now = timeSource.getEpochTimeNs(); // verify waitFor assertTrue(TimeUnit.SECONDS.convert(waitForSeconds, TimeUnit.NANOSECONDS) - WAIT_FOR_DELTA_NANOS <= now - ev.event.getEventTime()); Map nodeRates = (Map) ev.event.getProperties().get(SearchRateTrigger.HOT_NODES); @@ -715,7 +715,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, @Override public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { - CapturedEvent ev = new CapturedEvent(timeSource.getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message); final CountDownLatch latch = listenerEventLatch; synchronized (latch) { if (0 == latch.getCount()) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java index 97bb7d591e12..3bd84124821f 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java @@ -187,7 +187,7 @@ public TestTriggerAction() { public void process(TriggerEvent event, ActionContext actionContext) { try { if (triggerFired.compareAndSet(false, true)) { - long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getTimeNs(); + long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -222,7 +222,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { List lst = listenerEvents.computeIfAbsent(config.name, s -> new ArrayList<>()); - lst.add(new CapturedEvent(timeSource.getTimeNs(), + lst.add(new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message)); } } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerEventQueueTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerEventQueueTest.java index 9dc8169faf32..ab662be4596e 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerEventQueueTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerEventQueueTest.java @@ -64,7 +64,7 @@ public void testSerialization() throws Exception { hotHosts.put("host1", 1); hotHosts.put("host2", 1); TriggerEvent ev = new MetricTrigger.MetricBreachedEvent("testTrigger", "testCollection", "shard1", - CollectionParams.CollectionAction.ADDREPLICA.toLower(), cloudManager.getTimeSource().getTimeNs(), + CollectionParams.CollectionAction.ADDREPLICA.toLower(), cloudManager.getTimeSource().getEpochTimeNs(), "foo", hotHosts); queue.offerEvent(ev); ev = queue.pollEvent(); diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java index a9938cdc454e..5c04abecfb46 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java @@ -8,7 +8,7 @@ * * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software + * Unless requiCloudMLTQParserTestred by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and @@ -388,7 +388,7 @@ public void process(TriggerEvent event, ActionContext actionContext) { try { if (triggerFired.compareAndSet(false, true)) { events.add(event); - long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getTimeNs(); + long currentTimeNanos = actionContext.getCloudManager().getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -548,7 +548,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { List lst = listenerEvents.computeIfAbsent(config.name, s -> new ArrayList<>()); - CapturedEvent ev = new CapturedEvent(timeSource.getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(timeSource.getEpochTimeNs(), context, config, stage, actionName, event, message); lst.add(ev); allListenerEvents.add(ev); diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java index 5919c1cffaec..2b69964d1c49 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java @@ -147,7 +147,7 @@ public void setAsyncId(String asyncId) { }; List operations = Lists.asList(moveReplica, new CollectionAdminRequest.AsyncCollectionAdminRequest[]{mockRequest}); NodeLostTrigger.NodeLostEvent nodeLostEvent = new NodeLostTrigger.NodeLostEvent(TriggerEventType.NODELOST, - "mock_trigger_name", Collections.singletonList(SIM_TIME_SOURCE.getTimeNs()), + "mock_trigger_name", Collections.singletonList(SIM_TIME_SOURCE.getEpochTimeNs()), Collections.singletonList(sourceNodeName), CollectionParams.CollectionAction.MOVEREPLICA.toLower()); ActionContext actionContext = new ActionContext(cluster, null, new HashMap<>(Collections.singletonMap("operations", operations))); diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimLargeCluster.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimLargeCluster.java index 921a4962d110..c89233e0f3c5 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimLargeCluster.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimLargeCluster.java @@ -124,7 +124,7 @@ public static class TestTriggerListener extends TriggerListenerBase { @Override public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { - CapturedEvent ev = new CapturedEvent(cluster.getTimeSource().getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(cluster.getTimeSource().getEpochTimeNs(), context, config, stage, actionName, event, message); final CountDownLatch latch = listenerEventLatch; synchronized (latch) { if (0 == latch.getCount()) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeAddedTrigger.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeAddedTrigger.java index 759715425d65..a780f9869a31 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeAddedTrigger.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeAddedTrigger.java @@ -93,7 +93,7 @@ public void testTrigger() throws Exception { trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -135,7 +135,7 @@ public void testTrigger() throws Exception { AtomicBoolean fired = new AtomicBoolean(false); trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -282,7 +282,7 @@ public void testRestoreState() throws Exception { newTrigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java index f1d38aab8e50..062f7f76b892 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java @@ -95,7 +95,7 @@ public void testTrigger() throws Exception { trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -138,7 +138,7 @@ public void testTrigger() throws Exception { AtomicBoolean fired = new AtomicBoolean(false); trigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitTime, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -301,7 +301,7 @@ public void testRestoreState() throws Exception { newTrigger.setProcessor(event -> { if (fired.compareAndSet(false, true)) { eventRef.set(event); - long currentTimeNanos = timeSource.getTimeNs(); + long currentTimeNanos = timeSource.getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimTriggerIntegration.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimTriggerIntegration.java index a49a7396e0d9..b30ac83ec877 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimTriggerIntegration.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimTriggerIntegration.java @@ -341,7 +341,7 @@ public void testNodeLostTriggerRestoreState() throws Exception { // since we know the nodeLost event has been detected, we can recored the current timestamp // (relative to the cluster's time source) and later assert that (restored state) correctly // tracked that the event happened prior to "now" - final long maxEventTimeNs = cluster.getTimeSource().getTimeNs(); + final long maxEventTimeNs = cluster.getTimeSource().getEpochTimeNs(); // even though our trigger has detected a lost node, the *action* we registered should not have // been run yet, due to the large waitFor configuration... @@ -441,7 +441,7 @@ public void testNodeAddedTriggerRestoreState() throws Exception { // since we know the nodeAddded event has been detected, we can recored the current timestamp // (relative to the cluster's time source) and later assert that (restored state) correctly // tracked that the event happened prior to "now" - final long maxEventTimeNs = cluster.getTimeSource().getTimeNs(); + final long maxEventTimeNs = cluster.getTimeSource().getEpochTimeNs(); // even though our trigger has detected an added node, the *action* we registered should not have // been run yet, due to the large waitFor configuration... @@ -670,7 +670,7 @@ public void process(TriggerEvent event, ActionContext actionContext) { try { if (triggerFired.compareAndSet(false, true)) { events.add(event); - long currentTimeNanos = cluster.getTimeSource().getTimeNs(); + long currentTimeNanos = cluster.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -1093,7 +1093,7 @@ public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, @Override public synchronized void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context, Throwable error, String message) { - CapturedEvent ev = new CapturedEvent(cluster.getTimeSource().getTimeNs(), context, config, stage, actionName, event, message); + CapturedEvent ev = new CapturedEvent(cluster.getTimeSource().getEpochTimeNs(), context, config, stage, actionName, event, message); final CountDownLatch latch = listenerEventLatch; synchronized (latch) { if (0 == latch.getCount()) { @@ -1358,7 +1358,7 @@ public static class TestSearchRateAction extends TriggerActionBase { public void process(TriggerEvent event, ActionContext context) throws Exception { try { events.add(event); - long currentTimeNanos = cluster.getTimeSource().getTimeNs(); + long currentTimeNanos = cluster.getTimeSource().getEpochTimeNs(); long eventTimeNanos = event.getEventTime(); long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS; if (currentTimeNanos - eventTimeNanos <= waitForNanos) { @@ -1459,7 +1459,7 @@ public void testSearchRate() throws Exception { assertNull(events.get(3).actionName); CapturedEvent ev = events.get(0); - long now = cluster.getTimeSource().getTimeNs(); + long now = cluster.getTimeSource().getEpochTimeNs(); // verify waitFor assertTrue(TimeUnit.SECONDS.convert(waitForSeconds, TimeUnit.NANOSECONDS) - WAIT_FOR_DELTA_NANOS <= now - ev.event.getEventTime()); Map nodeRates = (Map)ev.event.getProperties().get(SearchRateTrigger.HOT_NODES);