Skip to content

Commit f1edf11

Browse files
committed
(temp) improved debug info for test failures
1 parent 89d1040 commit f1edf11

2 files changed

Lines changed: 58 additions & 7 deletions

File tree

core/src/main/java/org/opensearch/sql/executor/analytics/AnalyticsExecutionEngine.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,23 @@ private Schema buildSchema(List<RelDataTypeField> fields) {
276276

277277
private ExprType convertType(RelDataType type) {
278278
try {
279-
return OpenSearchTypeFactory.convertAnalyticsEngineRelDataTypeToExprType(type);
279+
ExprType result = OpenSearchTypeFactory.convertAnalyticsEngineRelDataTypeToExprType(type);
280+
if (result == org.opensearch.sql.data.type.ExprCoreType.UNDEFINED) {
281+
// Log when we're about to return UNDEFINED so we can diagnose type inference issues
282+
org.apache.logging.log4j.LogManager.getLogger(AnalyticsExecutionEngine.class)
283+
.warn(
284+
"convertType: RelDataType {} (SqlTypeName={}) converted to UNDEFINED",
285+
type,
286+
type.getSqlTypeName());
287+
}
288+
return result;
280289
} catch (IllegalArgumentException e) {
290+
org.apache.logging.log4j.LogManager.getLogger(AnalyticsExecutionEngine.class)
291+
.warn(
292+
"convertType: Failed to convert RelDataType {} (SqlTypeName={}), returning UNKNOWN",
293+
type,
294+
type.getSqlTypeName(),
295+
e);
281296
return org.opensearch.sql.data.type.ExprCoreType.UNKNOWN;
282297
}
283298
}

integ-test/src/test/java/org/opensearch/sql/util/MatcherUtils.java

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,12 @@ public static Matcher<JSONObject> kvInt(String key, Matcher<Integer> matcher) {
147147
@SafeVarargs
148148
public static void verifySchema(JSONObject response, Matcher<JSONObject>... matchers) {
149149
try {
150-
verify(response.getJSONArray("schema"), matchers);
150+
JSONArray schema = response.getJSONArray("schema");
151+
LOG.info(
152+
"[TRIAGE] verifySchema - expected {} columns, actual {} columns",
153+
matchers.length,
154+
schema.length());
155+
verify(schema, matchers);
151156
} catch (Exception e) {
152157
LOG.error(String.format("verify schema failed, response: %s", response.toString()), e);
153158
throw e;
@@ -166,7 +171,14 @@ public static void verifySchemaInOrder(JSONObject response, Matcher<JSONObject>.
166171

167172
@SafeVarargs
168173
public static void verifyDataRows(JSONObject response, Matcher<JSONArray>... matchers) {
169-
verify(response.getJSONArray("datarows"), matchers);
174+
// ponytail: debug logging for multi-shard triage
175+
JSONArray actual = response.getJSONArray("datarows");
176+
LOG.info(
177+
"[TRIAGE] verifyDataRows - expected {} rows, actual {} rows",
178+
matchers.length,
179+
actual.length());
180+
LOG.info("[TRIAGE] Actual data rows: {}", actual.toString());
181+
verify(actual, matchers);
170182
}
171183

172184
@SafeVarargs
@@ -204,8 +216,20 @@ public static void verifyNumOfRows(JSONObject response, int numOfRow) {
204216
public static <T> void verify(JSONArray array, Matcher<T>... matchers) {
205217
List<T> objects = new ArrayList<>();
206218
array.iterator().forEachRemaining(o -> objects.add((T) o));
207-
assertEquals(matchers.length, objects.size());
208-
assertThat(objects, containsInAnyOrder(matchers));
219+
// ponytail: debug logging for multi-shard triage
220+
if (matchers.length != objects.size()) {
221+
LOG.warn(
222+
"[TRIAGE] verify() count mismatch - expected {}, got {}",
223+
matchers.length,
224+
objects.size());
225+
}
226+
try {
227+
assertEquals(matchers.length, objects.size());
228+
assertThat(objects, containsInAnyOrder(matchers));
229+
} catch (AssertionError e) {
230+
LOG.error("[TRIAGE] verify() failed - assertion error: {}", e.getMessage());
231+
throw e;
232+
}
209233
}
210234

211235
// TODO: this is temporary fix for fixing serverless tests to pass as it creates multiple shards
@@ -239,8 +263,20 @@ public static <T> void verifyAddressRow(JSONArray array, Matcher<T>... matchers)
239263
public static <T> void verifyInOrder(JSONArray array, Matcher<T>... matchers) {
240264
List<T> objects = new ArrayList<>();
241265
array.iterator().forEachRemaining(o -> objects.add((T) o));
242-
assertEquals(matchers.length, objects.size());
243-
assertThat(objects, contains(matchers));
266+
// ponytail: debug logging for multi-shard triage
267+
if (matchers.length != objects.size()) {
268+
LOG.warn(
269+
"[TRIAGE] verifyInOrder() count mismatch - expected {}, got {}",
270+
matchers.length,
271+
objects.size());
272+
}
273+
try {
274+
assertEquals(matchers.length, objects.size());
275+
assertThat(objects, contains(matchers));
276+
} catch (AssertionError e) {
277+
LOG.error("[TRIAGE] verifyInOrder() failed - assertion error: {}", e.getMessage());
278+
throw e;
279+
}
244280
}
245281

246282
@SuppressWarnings("unchecked")

0 commit comments

Comments
 (0)