Closed alexandra-bucur closed 2 years ago
Hi @alexandra-bucur β looks like I missed a spot to remove the proxy checking for classifications. Have pushed a change that should remove this validation. I'll re-test to ensure no breakages in CTS, but if you want to also re-test locally with the latest snapshot build (https://oss.sonatype.org/content/repositories/snapshots/org/odpi/egeria/egeria-connector-xtdb/) that'd be great.
(I suspect the CTS isn't currently testing this case, so the CTS test will mainly reveal whether the 1-line code change has broken anything else in the CTS.)
Fix should also be in the 3.10 release now, if you want to test with that instead. At the very least the error should have changed π Do let me know either way, please? π
Hi @cmgrote! Thank you for looking into this. I could not see that exception anymore, but unfortunately, I still have some issues:
Fri Aug 26 11:40:48 EEST 2022 omas-server Exception OMAG-REPOSITORY-HANDLER-0003 Supplementary information: log record id c72e5bb2-5883-49d0-b0ba-e877f9033795 org.odpi.openmetadata.repositoryservices.ffdc.exception.EntityNotKnownException returned message of OMRS-XTDB-REPOSITORY-404-001 The repository does not contain any entity with the GUID e_database_schema@metadataCollection:entityGUID metadataCollection:entityGUID and stacktrace of
OCFCheckedExceptionBase{reportedHTTPCode=404, reportingClassName='org.odpi.egeria.connectors.juxt.xtdb.txnfn.ClassifyEntity', reportingActionDescription=':egeria/classifyEntity', reportedErrorMessage='OMRS-XTDB-REPOSITORY-404-001 The repository does not contain any entity with the GUID e_database_schema@metadataCollection:entityGUID ', reportedErrorMessageId='OMRS-XTDB-REPOSITORY-404-001', reportedErrorMessageParameters=[e_database_schema@metadataCollection:entityGUID ], reportedSystemAction='The XTDB repository is unable to find any entity with the provided GUID.', reportedUserAction='Correct the caller's code to ensure the entity being requested is one contained in the local server.', reportedCaughtException=null, reportedCaughtExceptionClassName='null', relatedProperties=null}
at org.odpi.egeria.connectors.juxt.xtdb.txnfn.ClassifyEntity.<init>(ClassifyEntity.java:73)
at clojure.core$eval16497$fn__16498.invoke(NO_SOURCE_FILE:0)
at clojure.lang.AFn.applyToHelper(AFn.java:216)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$apply.invoke(core.clj:662)
at xtdb.tx$eval9087$fn__9089.invoke(tx.clj:247)
at clojure.lang.MultiFn.invoke(MultiFn.java:239)
at xtdb.tx.InFlightTx$fn__9139.invoke(tx.clj:314)
at xtdb.tx.InFlightTx.index_tx_events(tx.clj:311)
at xtdb.tx$__GT_tx_ingester$fn__9330.invoke(tx.clj:509)
at xtdb.tx.subscribe$tx_handler$fn__15068.invoke(subscribe.clj:38)
at clojure.lang.PersistentVector.reduce(PersistentVector.java:343)
at clojure.core$reduce.invokeStatic(core.clj:6885)
at clojure.core$reduce.invoke(core.clj:6868)
at xtdb.tx.subscribe.NotifyingSubscriberHandler$fn__15146.invoke(subscribe.clj:98)
at xtdb.tx.subscribe$completable_thread$fn__15062.invoke(subscribe.clj:19)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.lang.Thread.run(Thread.java:834)
It's still related to the fact that we don't store the DB schemas in this scenario.
Ok, I think I understand. Is this an accurate description of the expected behavior?
This sounds logical, and now I see it's what seems to be implemented in the graph repository's metadata collection for the (newer) ::classifyEntity
method that receives an entity proxy directly.
However, I think this has exposed a bit of an issue with our interface definitions (and by implication our process for maintaining / extending / revising these interfaces):
The defined interface / expectations of this (newer) ::classifyEntity
method:
OMRSMetadtaaCollection
).EntityNotKnownException
explicitly defined for the method with a description that implies that if the entity proxy does not exist it should not be created.The (newer) ::classifyEntity
expects the (older) method to convert what is actually an EntityProxy
into an EntityDetail
object.
EntitySummary
directly).In theory https://github.com/odpi/egeria-connector-xtdb/pull/400 should implement the new behavior (assuming you're using this newer ::classifyEntity
method that takes the full EntityProxy object?)
Can you please re-test with the latest snapshot (https://oss.sonatype.org/content/repositories/snapshots/org/odpi/egeria/egeria-connector-xtdb/3.11-SNAPSHOT/egeria-connector-xtdb-3.11-20220827.223512-2-jar-with-dependencies.jar) and confirm either way? π
Hey @cmgrote! Thank you for your work! π It now behaves exactly like it does with the default repository. It still runs with some exceptions but they are related to entities already classified with LatestChange. This is subject to another investigation. It also doesn't seem to affect the lineage.
I tried to do an initial load from IGC using Data Engine on a platform with the XTDB connector. The lineage was not fully processed because at the moment of saving some classifications (latest changes on anchors) in the local repository I got some exceptions. It looks to me that the connector does not allow storing classifications for entities not stored in the local repo. For example, the initial load is a job level one and database schemas are not saved locally. There is an anchor from relational table to database schema and the failure appears when a latest change classification needs to be put on the database schema. Egeria allows this behavior for a few months.
This is a similar stack trace for a data file that only exists as an entity proxy in the local repository: