[ 
https://issues.apache.org/jira/browse/HIVE-26411?focusedWorklogId=794082&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-794082
 ]

ASF GitHub Bot logged work on HIVE-26411:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 22/Jul/22 06:46
            Start Date: 22/Jul/22 06:46
    Worklog Time Spent: 10m 
      Work Description: ghanko commented on code in PR #3458:
URL: https://github.com/apache/hive/pull/3458#discussion_r927340981


##########
ql/src/test/org/apache/hadoop/hive/ql/parse/repl/metric/TestReplicationMetricCollector.java:
##########
@@ -75,6 +84,12 @@ public void setup() throws Exception {
     MetricCollector.getInstance().init(conf);
     Mockito.when(fmd.getFailoverEventId()).thenReturn(10L);
     Mockito.when(fmd.getFilePath()).thenReturn("dummyDir");
+    disableBackgroundThreads();
+  }
+
+  private void disableBackgroundThreads() {
+    PowerMockito.mockStatic(MetricSink.class);
+    Mockito.when(MetricSink.getInstance()).thenReturn(metricSinkInstance);

Review Comment:
   Yes, this is the main idea and I verified locally with the debugger that the 
background threads are not started. Precisely what happens is that whenever 
MetricSink.getInstance() is called, it returns the mock metricSinkInstance and 
even if its init() is called, it does nothing because it's an empty method 
provided by the mock framework.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 794082)
    Time Spent: 0.5h  (was: 20m)

> Fix TestReplicationMetricCollector flakiness
> --------------------------------------------
>
>                 Key: HIVE-26411
>                 URL: https://issues.apache.org/jira/browse/HIVE-26411
>             Project: Hive
>          Issue Type: Bug
>          Components: Tests
>            Reporter: Hankó Gergely
>            Assignee: Hankó Gergely
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> TestReplicationMetricCollector tests can fail intermittently because 
> ReplicationMetricCollector schedules a MetrikSink thread that consumes the 
> MetricCollector's 
> metricMap regularly and if this happens at the wrong time, the tests, that 
> use the MetricCollector.getInstance().getMetrics() method, can fail.
> Example stack trace:
> {code:java}
> java.lang.AssertionError: expected:<1> but was:<0> at 
> org.junit.Assert.fail(Assert.java:88) at 
> org.junit.Assert.failNotEquals(Assert.java:743) at 
> org.junit.Assert.assertEquals(Assert.java:118) at 
> org.junit.Assert.assertEquals(Assert.java:555) at 
> org.junit.Assert.assertEquals(Assert.java:542) at 
> org.apache.hadoop.hive.ql.parse.repl.metric.TestReplicationMetricCollector.testFailoverReadyDumpMetrics(TestReplicationMetricCollector.java:227){code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to