diff --git a/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/CapturedContext.java b/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/CapturedContext.java index d96a9675c54..f89d7f16adf 100644 --- a/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/CapturedContext.java +++ b/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/CapturedContext.java @@ -139,7 +139,7 @@ public Object getMember(Object target, String memberName) { } target = ReflectiveFieldValueResolver.resolve(target, target.getClass(), memberName); } - checkUndefined(target, memberName, "Cannot dereference to field: "); + checkUndefined(target, memberName, "Cannot dereference field: "); return target; } diff --git a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/ProbeConditionTest.java b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/ProbeConditionTest.java index 2372be7b861..9cb284b3d91 100644 --- a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/ProbeConditionTest.java +++ b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/ProbeConditionTest.java @@ -38,8 +38,7 @@ class Obj1 { private int field = 10; List field2 = new ArrayList<>(); } - ValueReferenceResolver ctx = - RefResolverHelper.createResolver(singletonMap("this", new Obj1()), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj1()); assertTrue(probeCondition.execute(ctx)); @@ -48,8 +47,7 @@ class Obj2 { private int field = 10; List field2 = new ArrayList<>(); } - ValueReferenceResolver ctx2 = - RefResolverHelper.createResolver(singletonMap("this", new Obj2()), null); + ValueReferenceResolver ctx2 = RefResolverHelper.createResolver(new Obj2()); assertFalse(probeCondition.execute(ctx2)); } @@ -72,7 +70,7 @@ class Obj2 { singletonMap("this", new Obj2()), singletonMap("container", new Container("world"))); RuntimeException runtimeException = assertThrows(RuntimeException.class, () -> probeCondition.execute(ctx2)); - assertEquals("Cannot dereference to field: container", runtimeException.getMessage()); + assertEquals("Cannot dereference field: container", runtimeException.getMessage()); } @Test @@ -82,8 +80,7 @@ class Obj { int intField1 = 42; String strField = "foo"; } - Obj obj = new Obj(); - ValueReferenceResolver ctx = RefResolverHelper.createResolver(singletonMap("this", obj), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj()); assertTrue(probeCondition.execute(ctx)); } @@ -115,8 +112,7 @@ class Obj { int idx = 1; } - ValueReferenceResolver ctx = - RefResolverHelper.createResolver(singletonMap("this", new Obj()), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj()); assertTrue(probeCondition.execute(ctx)); } @@ -126,8 +122,7 @@ void testStringOperation() throws Exception { class Obj { String strField = "foobar"; } - ValueReferenceResolver ctx = - RefResolverHelper.createResolver(singletonMap("this", new Obj()), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj()); assertTrue(probeCondition.execute(ctx)); } @@ -149,8 +144,7 @@ void testJsonParsing() throws IOException { class Obj { Collection vets = Arrays.asList("vet1", "vet2", "vet3"); } - ValueReferenceResolver ctx = - RefResolverHelper.createResolver(singletonMap("this", new Obj()), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj()); // the condition checks if length of vets > 2 assertTrue(probeCondition.execute(ctx)); @@ -222,8 +216,7 @@ class Obj { Set emptySet = new HashSet<>(); Object[] emptyArray = new Object[0]; } - ValueReferenceResolver ctx = - RefResolverHelper.createResolver(singletonMap("this", new Obj()), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj()); assertTrue(probeCondition.execute(ctx)); } @@ -239,8 +232,7 @@ class Obj { Object objVal = null; char charVal = 'a'; } - ValueReferenceResolver ctx = - RefResolverHelper.createResolver(singletonMap("this", new Obj()), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj()); assertTrue(probeCondition.execute(ctx)); } @@ -269,8 +261,7 @@ class Obj { strList.add("foo"); } } - ValueReferenceResolver ctx = - RefResolverHelper.createResolver(singletonMap("this", new Obj()), null); + ValueReferenceResolver ctx = RefResolverHelper.createResolver(new Obj()); assertTrue(probeCondition.execute(ctx)); } diff --git a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/RefResolverHelper.java b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/RefResolverHelper.java index c54b4f18f00..88b33231c3f 100644 --- a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/RefResolverHelper.java +++ b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/RefResolverHelper.java @@ -8,33 +8,6 @@ public class RefResolverHelper { public static ValueReferenceResolver createResolver(Object instance) { - /* - List fields = new ArrayList<>(); - Class clazz = instance.getClass(); - while (clazz != null) { - fields.addAll(Arrays.asList(clazz.getDeclaredFields())); - clazz = clazz.getSuperclass(); - } - CapturedContext.CapturedValue[] fieldValues = new CapturedContext.CapturedValue[fields.size()]; - int index = 0; - for (Field field : fields) { - try { - field.setAccessible(true); - if (Redaction.isRedactedKeyword(field.getName())) { - fieldValues[index++] = - CapturedContext.CapturedValue.redacted( - field.getName(), field.getType().getTypeName()); - } else { - fieldValues[index++] = - CapturedContext.CapturedValue.of( - field.getName(), field.getType().getTypeName(), field.get(instance)); - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - */ CapturedContext.CapturedValue thisValue = CapturedContext.CapturedValue.of("this", instance.getClass().getTypeName(), instance); return new CapturedContext(new CapturedContext.CapturedValue[] {thisValue}, null, null, null); diff --git a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/HasAllExpressionTest.java b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/HasAllExpressionTest.java index 53ad6e7b7e3..636db95786c 100644 --- a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/HasAllExpressionTest.java +++ b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/HasAllExpressionTest.java @@ -115,7 +115,7 @@ void testArrayHasAll() { assertThrows( RuntimeException.class, () -> all(targetExpression, eq(fldRef, value(10))).evaluate(ctx)); - assertEquals("Cannot dereference to field: testField", runtimeException.getMessage()); + assertEquals("Cannot dereference field: testField", runtimeException.getMessage()); expression = all(targetExpression, eq(itRef, value("hello"))); assertFalse(expression.evaluate(ctx)); diff --git a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/ValueRefExpressionTest.java b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/ValueRefExpressionTest.java index 06eccb177dc..146672eaef7 100644 --- a/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/ValueRefExpressionTest.java +++ b/dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/expressions/ValueRefExpressionTest.java @@ -3,7 +3,6 @@ import static com.datadog.debugger.el.DSL.*; import static com.datadog.debugger.el.PrettyPrintVisitor.print; import static com.datadog.debugger.el.TestHelper.setFieldInConfig; -import static java.util.Collections.singletonMap; import static org.junit.jupiter.api.Assertions.*; import com.datadog.debugger.el.DSL; @@ -49,13 +48,13 @@ void testPredicatedRef() { RuntimeException runtimeException = assertThrows(RuntimeException.class, () -> isEmptyInvalid.evaluate(ctx)); - assertEquals("Cannot dereference to field: x", runtimeException.getMessage()); + assertEquals("Cannot dereference field: x", runtimeException.getMessage()); runtimeException = assertThrows(RuntimeException.class, () -> and(isEmptyInvalid, isEmpty).evaluate(ctx)); - assertEquals("Cannot dereference to field: x", runtimeException.getMessage()); + assertEquals("Cannot dereference field: x", runtimeException.getMessage()); runtimeException = assertThrows(RuntimeException.class, () -> or(isEmptyInvalid, isEmpty).evaluate(ctx)); - assertEquals("Cannot dereference to field: x", runtimeException.getMessage()); + assertEquals("Cannot dereference field: x", runtimeException.getMessage()); assertEquals("isEmpty(x)", print(isEmptyInvalid)); } @@ -75,8 +74,7 @@ class Obj { exts.put(ValueReferences.DURATION_EXTENSION_NAME, duration); exts.put(ValueReferences.EXCEPTION_EXTENSION_NAME, exception); ValueReferenceResolver resolver = - RefResolverHelper.createResolver(singletonMap("this", new Obj()), null) - .withExtensions(exts); + RefResolverHelper.createResolver(new Obj()).withExtensions(exts); ValueRefExpression expression = DSL.ref(ValueReferences.DURATION_REF); assertEquals(duration, expression.evaluate(resolver).getValue()); diff --git a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/instrumentation/CapturedContextInstrumentor.java b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/instrumentation/CapturedContextInstrumentor.java index 48a86ffab6d..9722ed59c3c 100644 --- a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/instrumentation/CapturedContextInstrumentor.java +++ b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/instrumentation/CapturedContextInstrumentor.java @@ -552,7 +552,7 @@ private InsnList collectCapturedContext(Snapshot.Kind kind, AbstractInsnNode loc // stack: [capturedcontext] collectStaticFields(insnList); // stack: [capturedcontext] - collectSpecialFields(insnList); + collectCorrelationInfo(insnList); // stack: [capturedcontext] if (kind != Snapshot.Kind.UNHANDLED_EXCEPTION) { /* @@ -857,7 +857,7 @@ private void collectStaticFields(InsnList insnList) { // stack: [capturedcontext] } - private void collectSpecialFields(InsnList insnList) { + private void collectCorrelationInfo(InsnList insnList) { // expected stack top: [capturedcontext] /* * We are cheating a bit with CorrelationAccess - utilizing the knowledge that it is a singleton loaded by the diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/CapturedSnapshotTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/CapturedSnapshotTest.java index 5a9e85d1f6d..099b6a28012 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/CapturedSnapshotTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/CapturedSnapshotTest.java @@ -1119,8 +1119,7 @@ public void nullCondition() throws IOException, URISyntaxException { List evaluationErrors = listener.snapshots.get(0).getEvaluationErrors(); Assertions.assertEquals(1, evaluationErrors.size()); Assertions.assertEquals("nullTyped.fld.fld", evaluationErrors.get(0).getExpr()); - Assertions.assertEquals( - "Cannot dereference to field: fld", evaluationErrors.get(0).getMessage()); + Assertions.assertEquals("Cannot dereference field: fld", evaluationErrors.get(0).getMessage()); } @Test @@ -1246,8 +1245,7 @@ public void mergedProbesConditionMainErrorAdditionalFalse() List evaluationErrors = snapshots.get(0).getEvaluationErrors(); Assertions.assertEquals(1, evaluationErrors.size()); Assertions.assertEquals("nullTyped.fld.fld", evaluationErrors.get(0).getExpr()); - Assertions.assertEquals( - "Cannot dereference to field: fld", evaluationErrors.get(0).getMessage()); + Assertions.assertEquals("Cannot dereference field: fld", evaluationErrors.get(0).getMessage()); } @Test @@ -1266,8 +1264,7 @@ public void mergedProbesConditionMainErrorAdditionalTrue() List evaluationErrors = snapshots.get(0).getEvaluationErrors(); Assertions.assertEquals(1, evaluationErrors.size()); Assertions.assertEquals("nullTyped.fld.fld", evaluationErrors.get(0).getExpr()); - Assertions.assertEquals( - "Cannot dereference to field: fld", evaluationErrors.get(0).getMessage()); + Assertions.assertEquals("Cannot dereference field: fld", evaluationErrors.get(0).getMessage()); assertNull(snapshots.get(1).getEvaluationErrors()); } @@ -1287,8 +1284,7 @@ public void mergedProbesConditionMainFalseAdditionalError() List evaluationErrors = snapshots.get(0).getEvaluationErrors(); Assertions.assertEquals(1, evaluationErrors.size()); Assertions.assertEquals("nullTyped.fld.fld", evaluationErrors.get(0).getExpr()); - Assertions.assertEquals( - "Cannot dereference to field: fld", evaluationErrors.get(0).getMessage()); + Assertions.assertEquals("Cannot dereference field: fld", evaluationErrors.get(0).getMessage()); } @Test @@ -1308,8 +1304,7 @@ public void mergedProbesConditionMainTrueAdditionalError() List evaluationErrors = snapshots.get(1).getEvaluationErrors(); Assertions.assertEquals(1, evaluationErrors.size()); Assertions.assertEquals("nullTyped.fld.fld", evaluationErrors.get(0).getExpr()); - Assertions.assertEquals( - "Cannot dereference to field: fld", evaluationErrors.get(0).getMessage()); + Assertions.assertEquals("Cannot dereference field: fld", evaluationErrors.get(0).getMessage()); } @Test diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/LogProbesInstrumentationTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/LogProbesInstrumentationTest.java index f3c6642d34f..eb5f2070b6d 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/LogProbesInstrumentationTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/LogProbesInstrumentationTest.java @@ -340,13 +340,11 @@ public void lineTemplateNullFieldLog() throws IOException, URISyntaxException { Snapshot snapshot = assertOneSnapshot(listener); assertCapturesNull(snapshot); assertEquals( - "this is log line with field={Cannot dereference to field: intValue}", - snapshot.getMessage()); + "this is log line with field={Cannot dereference field: intValue}", snapshot.getMessage()); assertEquals(1, snapshot.getEvaluationErrors().size()); assertEquals("nullObject.intValue", snapshot.getEvaluationErrors().get(0).getExpr()); assertEquals( - "Cannot dereference to field: intValue", - snapshot.getEvaluationErrors().get(0).getMessage()); + "Cannot dereference field: intValue", snapshot.getEvaluationErrors().get(0).getMessage()); } @Test @@ -404,7 +402,7 @@ public void conditionWithLogTemplateEvalError() throws IOException, URISyntaxExc Assertions.assertEquals(2, snapshot.getCaptures().getEntry().getArguments().size()); Assertions.assertEquals(1, snapshot.getEvaluationErrors().size()); Assertions.assertEquals( - "Cannot dereference to field: typoArg", snapshot.getEvaluationErrors().get(0).getMessage()); + "Cannot dereference field: typoArg", snapshot.getEvaluationErrors().get(0).getMessage()); } @Test diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/SpanDecorationProbeInstrumentationTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/SpanDecorationProbeInstrumentationTest.java index 98c4f59c7f0..a3d06d6064c 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/SpanDecorationProbeInstrumentationTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/SpanDecorationProbeInstrumentationTest.java @@ -165,7 +165,7 @@ public void methodTagEvalError() throws IOException, URISyntaxException { MutableSpan span = traceInterceptor.getFirstSpan(); assertNull(span.getTags().get("tag1")); assertEquals( - "Cannot dereference to field: noarg", span.getTags().get("_dd.di.tag1.evaluation_error")); + "Cannot dereference field: noarg", span.getTags().get("_dd.di.tag1.evaluation_error")); } @Test @@ -183,7 +183,7 @@ public void methodActiveSpanInvalidCondition() throws IOException, URISyntaxExce Snapshot snapshot = mockSink.getSnapshots().get(0); assertEquals(1, snapshot.getEvaluationErrors().size()); assertEquals( - "Cannot dereference to field: noarg", snapshot.getEvaluationErrors().get(0).getMessage()); + "Cannot dereference field: noarg", snapshot.getEvaluationErrors().get(0).getMessage()); } @Test @@ -298,7 +298,7 @@ public void lineActiveSpanInvalidCondition() throws IOException, URISyntaxExcept Snapshot snapshot = mockSink.getSnapshots().get(0); assertEquals(1, snapshot.getEvaluationErrors().size()); assertEquals( - "Cannot dereference to field: noarg", snapshot.getEvaluationErrors().get(0).getMessage()); + "Cannot dereference field: noarg", snapshot.getEvaluationErrors().get(0).getMessage()); } @Test diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/util/MoshiSnapshotTestHelper.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/util/MoshiSnapshotTestHelper.java index 99cec359067..9b99165caac 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/util/MoshiSnapshotTestHelper.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/util/MoshiSnapshotTestHelper.java @@ -193,13 +193,7 @@ public CapturedContext fromJson(JsonReader jsonReader) throws IOException { jsonReader.beginObject(); List argValues = new ArrayList<>(); while (jsonReader.hasNext()) { - String argName = jsonReader.peekJson().nextName(); - // if ("this".equals(argName)) { - // jsonReader.nextName(); // consume "this" - // fromJsonFields(jsonReader, capturedContext); - // continue; - // } - argName = jsonReader.nextName(); + String argName = jsonReader.nextName(); CapturedContext.CapturedValue capturedValue = valueAdapter.fromJson(jsonReader); if (capturedValue != null) { capturedValue.setName(argName); @@ -237,11 +231,6 @@ private void fromJsonFields(JsonReader jsonReader, CapturedContext capturedConte jsonReader.nextString(); break; } - case FIELDS: - { - // capturedContext.addFields(fromJsonCapturedValues(jsonReader)); - break; - } case NOT_CAPTURED_REASON: { jsonReader.nextString();