Hi everyone, I’m trying to create a new entity ty...
# troubleshoot
v
Hi everyone, I’m trying to create a new entity type called
Metric
in DataHub following the fork approach. The Metric entity only has one key aspect called MetricKey. However,
./gradlew build
is failing in the
:metadata-io:test
step. The test report indicates four failures, all with the same error:
Copy code
java.lang.IllegalArgumentException: Aspect MetricKey does not exist
Any idea to debug this? more info on 🧵
complete log:
Copy code
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 1.
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)
	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.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133)
	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.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.lang.Thread.run(Thread.java:750)
Caused by: org.testng.TestNGException: 
Cannot instantiate class com.linkedin.metadata.entity.EbeanAspectMigrationsDaoTest
	at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:30)
	at org.testng.internal.InstanceCreator.instantiateUsingDefaultConstructor(InstanceCreator.java:193)
	at org.testng.internal.InstanceCreator.createInstanceUsingObjectFactory(InstanceCreator.java:113)
	at org.testng.internal.InstanceCreator.createInstance(InstanceCreator.java:79)
	at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:109)
	at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:167)
	at org.testng.TestClass.getInstances(TestClass.java:102)
	at org.testng.TestClass.initTestClassesAndInstances(TestClass.java:82)
	at org.testng.TestClass.init(TestClass.java:74)
	at org.testng.TestClass.<init>(TestClass.java:39)
	at org.testng.TestRunner.initMethods(TestRunner.java:457)
	at org.testng.TestRunner.init(TestRunner.java:336)
	at org.testng.TestRunner.init(TestRunner.java:289)
	at org.testng.TestRunner.<init>(TestRunner.java:180)
	at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:613)
	at org.testng.SuiteRunner.init(SuiteRunner.java:178)
	at org.testng.SuiteRunner.<init>(SuiteRunner.java:112)
	at org.testng.TestNG.createSuiteRunner(TestNG.java:1306)
	at org.testng.TestNG.createSuiteRunners(TestNG.java:1282)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1131)
	at org.testng.TestNG.runSuites(TestNG.java:1069)
	at org.testng.TestNG.run(TestNG.java:1037)
	at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:141)
	at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:90)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
	... 25 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:23)
	... 49 more
Caused by: java.lang.IllegalArgumentException: Aspect MetricKey does not exist
	at com.linkedin.metadata.models.registry.ConfigEntityRegistry.buildAspectSpec(ConfigEntityRegistry.java:145)
	at com.linkedin.metadata.models.registry.ConfigEntityRegistry.<init>(ConfigEntityRegistry.java:112)
	at com.linkedin.metadata.models.registry.ConfigEntityRegistry.<init>(ConfigEntityRegistry.java:84)
	at com.linkedin.metadata.entity.AspectMigrationsDaoTest.<init>(AspectMigrationsDaoTest.java:38)
	at com.linkedin.metadata.entity.EbeanAspectMigrationsDaoTest.<init>(EbeanAspectMigrationsDaoTest.java:18)
	... 54 more
and the entity was added to the end of the
entity-registry.yml
file:
Copy code
- name: metric
    doc: A business metric
    keyAspect: MetricKey
I’ve also added
com/quintoandar
as an expected class path to
metadata-integration/java/datahub-client/scripts/check_jar.sh
and
metadata-integration/java/spark-lineage/scripts/check_jar.sh
since shadowJar was failing without it
b
Can you send the MetricKey.pdl file you createD?
v
Sure!
Copy code
namespace com.quintoandar.metadata.key

@Aspect = {
  "name": "metricKey",
}
record MetricKey {
  @Searchable = {
      "fieldType": "TEXT_PARTIAL",
      "fieldName": "Metric Id"
      "enableAutocomplete": true,
      "boostScore": 10.0
  }
  metricId: string
}
hey @big-carpet-38439, any updates here? I’m wondering if it’s best to keep the new entity in the
com.linkedin.metadata.key
namespace instead of trying to create a new one