Skip to content

Commit b5087d1

Browse files
ndimidukwenwj0
authored andcommitted
HBASE-27052 TestAsyncTableScanner.testScanWrongColumnFamily is flaky (apache#4451)
Signed-off-by: Andrew Purtell <[email protected]>
1 parent ca67420 commit b5087d1

File tree

5 files changed

+32
-14
lines changed

5 files changed

+32
-14
lines changed

hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,22 @@
1717
*/
1818
package org.apache.hadoop.hbase.client;
1919

20+
import static org.apache.hadoop.hbase.client.trace.hamcrest.AttributesMatchers.containsEntry;
2021
import static org.hamcrest.MatcherAssert.assertThat;
2122
import static org.hamcrest.Matchers.allOf;
23+
import static org.hamcrest.Matchers.anyOf;
24+
import static org.hamcrest.Matchers.containsString;
2225
import static org.hamcrest.Matchers.endsWith;
2326
import static org.hamcrest.Matchers.hasItem;
2427
import static org.hamcrest.Matchers.hasProperty;
28+
import static org.hamcrest.Matchers.is;
2529
import static org.hamcrest.Matchers.isA;
2630
import static org.junit.Assert.assertEquals;
2731
import static org.junit.Assert.assertThrows;
2832
import static org.junit.Assert.fail;
2933

3034
import io.opentelemetry.sdk.trace.data.SpanData;
35+
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
3136
import java.io.IOException;
3237
import java.io.UncheckedIOException;
3338
import java.util.Arrays;
@@ -46,6 +51,7 @@
4651
import org.apache.hadoop.hbase.StartTestingClusterOption;
4752
import org.apache.hadoop.hbase.TableName;
4853
import org.apache.hadoop.hbase.Waiter;
54+
import org.apache.hadoop.hbase.ipc.RemoteWithExtrasException;
4955
import org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException;
5056
import org.apache.hadoop.hbase.trace.OpenTelemetryClassRule;
5157
import org.apache.hadoop.hbase.trace.OpenTelemetryTestRule;
@@ -176,7 +182,8 @@ protected static List<Object[]> getTableAndScanCreatorParams() {
176182
/**
177183
* Used by implementation classes to assert the correctness of spans having errors.
178184
*/
179-
protected abstract void assertTraceError(final Matcher<String> exceptionTypeNameMatcher);
185+
protected abstract void
186+
assertTraceError(final Matcher<io.opentelemetry.api.common.Attributes> exceptionMatcher);
180187

181188
protected final List<Result> convertFromBatchResult(List<Result> results) {
182189
assertEquals(0, results.size() % 2);
@@ -269,7 +276,14 @@ public void testScanWrongColumnFamily() {
269276
} else {
270277
fail("Found unexpected Exception " + e);
271278
}
272-
assertTraceError(endsWith(NoSuchColumnFamilyException.class.getName()));
279+
assertTraceError(anyOf(
280+
containsEntry(is(SemanticAttributes.EXCEPTION_TYPE),
281+
endsWith(NoSuchColumnFamilyException.class.getName())),
282+
allOf(
283+
containsEntry(is(SemanticAttributes.EXCEPTION_TYPE),
284+
endsWith(RemoteWithExtrasException.class.getName())),
285+
containsEntry(is(SemanticAttributes.EXCEPTION_MESSAGE),
286+
containsString(NoSuchColumnFamilyException.class.getName())))));
273287
}
274288

275289
private void testScan(int start, boolean startInclusive, int stop, boolean stopInclusive,

hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableScan.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
package org.apache.hadoop.hbase.client;
1919

2020
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasEnded;
21-
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasExceptionWithType;
21+
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasException;
2222
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasName;
2323
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasParentSpanId;
2424
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
@@ -145,7 +145,8 @@ protected void assertTraceContinuity() {
145145
}
146146

147147
@Override
148-
protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
148+
protected void
149+
assertTraceError(Matcher<io.opentelemetry.api.common.Attributes> exceptionMatcher) {
149150
final String parentSpanName = testName.getMethodName();
150151
final Matcher<SpanData> parentSpanMatcher = allOf(hasName(parentSpanName), hasEnded());
151152
waitForSpan(parentSpanMatcher);
@@ -163,7 +164,7 @@ protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
163164
final Matcher<SpanData> scanOperationSpanMatcher =
164165
allOf(hasName(startsWith("SCAN " + TABLE_NAME.getNameWithNamespaceInclAsString())),
165166
hasParentSpanId(parentSpanId), hasStatusWithCode(StatusCode.ERROR),
166-
hasExceptionWithType(exceptionTypeNameMatcher), hasEnded());
167+
hasException(exceptionMatcher), hasEnded());
167168
assertThat(spans, hasItem(scanOperationSpanMatcher));
168169
final String scanOperationSpanId = spans.stream().filter(scanOperationSpanMatcher::matches)
169170
.map(SpanData::getSpanId).findAny().orElseThrow(AssertionError::new);

hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableScanAll.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
package org.apache.hadoop.hbase.client;
1919

2020
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasEnded;
21-
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasExceptionWithType;
21+
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasException;
2222
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasName;
2323
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasParentSpanId;
2424
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
@@ -116,7 +116,8 @@ protected void assertTraceContinuity() {
116116
}
117117

118118
@Override
119-
protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
119+
protected void
120+
assertTraceError(Matcher<io.opentelemetry.api.common.Attributes> exceptionMatcher) {
120121
final String parentSpanName = testName.getMethodName();
121122
final Matcher<SpanData> parentSpanMatcher = allOf(hasName(parentSpanName), hasEnded());
122123
waitForSpan(parentSpanMatcher);
@@ -134,7 +135,7 @@ protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
134135
final Matcher<SpanData> scanOperationSpanMatcher =
135136
allOf(hasName(startsWith("SCAN " + TABLE_NAME.getNameWithNamespaceInclAsString())),
136137
hasParentSpanId(parentSpanId), hasStatusWithCode(StatusCode.ERROR),
137-
hasExceptionWithType(exceptionTypeNameMatcher), hasEnded());
138+
hasException(exceptionMatcher), hasEnded());
138139
assertThat(spans, hasItem(scanOperationSpanMatcher));
139140
}
140141
}

hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableScanner.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
package org.apache.hadoop.hbase.client;
1919

2020
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasEnded;
21-
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasExceptionWithType;
21+
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasException;
2222
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasName;
2323
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasParentSpanId;
2424
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
@@ -128,7 +128,8 @@ protected void assertTraceContinuity() {
128128
}
129129

130130
@Override
131-
protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
131+
protected void
132+
assertTraceError(Matcher<io.opentelemetry.api.common.Attributes> exceptionMatcher) {
132133
final String parentSpanName = testName.getMethodName();
133134
final Matcher<SpanData> parentSpanMatcher = allOf(hasName(parentSpanName), hasEnded());
134135
waitForSpan(parentSpanMatcher);
@@ -146,7 +147,7 @@ protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
146147
final Matcher<SpanData> scanOperationSpanMatcher =
147148
allOf(hasName(startsWith("SCAN " + TABLE_NAME.getNameWithNamespaceInclAsString())),
148149
hasParentSpanId(parentSpanId), hasStatusWithCode(StatusCode.ERROR),
149-
hasExceptionWithType(exceptionTypeNameMatcher), hasEnded());
150+
hasException(exceptionMatcher), hasEnded());
150151
assertThat(spans, hasItem(scanOperationSpanMatcher));
151152
}
152153
}

hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRawAsyncTableScan.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
package org.apache.hadoop.hbase.client;
1919

2020
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasEnded;
21-
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasExceptionWithType;
21+
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasException;
2222
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasName;
2323
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasParentSpanId;
2424
import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
@@ -142,7 +142,8 @@ protected void assertTraceContinuity() {
142142
}
143143

144144
@Override
145-
protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
145+
protected void
146+
assertTraceError(Matcher<io.opentelemetry.api.common.Attributes> exceptionMatcher) {
146147
final String parentSpanName = testName.getMethodName();
147148
final Matcher<SpanData> parentSpanMatcher = allOf(hasName(parentSpanName), hasEnded());
148149
waitForSpan(parentSpanMatcher);
@@ -160,7 +161,7 @@ protected void assertTraceError(Matcher<String> exceptionTypeNameMatcher) {
160161
final Matcher<SpanData> scanOperationSpanMatcher =
161162
allOf(hasName(startsWith("SCAN " + TABLE_NAME.getNameWithNamespaceInclAsString())),
162163
hasParentSpanId(parentSpanId), hasStatusWithCode(StatusCode.ERROR),
163-
hasExceptionWithType(exceptionTypeNameMatcher), hasEnded());
164+
hasException(exceptionMatcher), hasEnded());
164165
assertThat(spans, hasItem(scanOperationSpanMatcher));
165166
final String scanOperationSpanId = spans.stream().filter(scanOperationSpanMatcher::matches)
166167
.map(SpanData::getSpanId).findAny().orElseThrow(AssertionError::new);

0 commit comments

Comments
 (0)