Duo Zhang created HBASE-27211:
---------------------------------
Summary: Data race in MonitoredTaskImpl could cause split wal
failure
Key: HBASE-27211
URL: https://issues.apache.org/jira/browse/HBASE-27211
Project: HBase
Issue Type: Bug
Components: monitoring, wal
Reporter: Duo Zhang
Assignee: Duo Zhang
https://ci-hbase.apache.org/job/HBase-Flaky-Tests/job/master/3866/testReport/junit/org.apache.hadoop.hbase.wal/TestWALSplitBoundedLogWriterCreation/testThreading/
{noformat}
java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy49.prettyPrintJournal(Unknown Source)
at
org.apache.hadoop.hbase.wal.WALSplitter.splitWAL(WALSplitter.java:427)
at
org.apache.hadoop.hbase.wal.TestWALSplit.doTestThreading(TestWALSplit.java:1035)
at
org.apache.hadoop.hbase.wal.TestWALSplit.testThreading(TestWALSplit.java:939)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at
org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at
org.apache.hadoop.hbase.SystemExitRule$1.evaluate(SystemExitRule.java:39)
at
org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299)
at
org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.apache.hadoop.hbase.monitoring.TaskMonitor$PassthroughInvocationHandler.invoke(TaskMonitor.java:291)
... 32 more
Caused by: java.lang.NullPointerException
at
org.apache.hadoop.hbase.monitoring.MonitoredTaskImpl.prettyPrintJournal(MonitoredTaskImpl.java:278)
... 36 more
{noformat}
In general, we do not set any null value in the code but the related data
structutre are not thread safe and we use it in multi thread environment when
splitting wal, so let's make it thread safe first.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)