diff --git a/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalDAO.java b/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalDAO.java index 55d976b0b..94941a924 100644 --- a/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalDAO.java +++ b/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalDAO.java @@ -106,10 +106,6 @@ public enum SchemaConfig { private boolean _noisyLogsEnabled = false; - // Which approach to be used for record retrieval when inserting a new record - // See GCN-38382 - private FindMethodology _findMethodology = FindMethodology.UNIQUE_ID; - // true if metadata change will be persisted into the change log table (metadata_aspect) private boolean _changeLogEnabled = true; @@ -167,12 +163,6 @@ public void setOverwriteLatestVersionEnabled(boolean overwriteLatestVersionEnabl } } - public enum FindMethodology { - UNIQUE_ID, // (legacy) https://javadoc.io/static/io.ebean/ebean/11.19.2/io/ebean/EbeanServer.html#find-java.lang.Class-java.lang.Object- - DIRECT_SQL, // https://javadoc.io/static/io.ebean/ebean/11.19.2/io/ebean/EbeanServer.html#findNative-java.lang.Class-java.lang.String- - QUERY_BUILDER // https://javadoc.io/static/io.ebean/ebean/11.19.2/io/ebean/Ebean.html#find-java.lang.Class- - } - @Value static class GMAIndexPair { public String valueType; @@ -236,39 +226,6 @@ public EbeanLocalDAO(@Nonnull Class aspectUnionClass, @Nonnull Bas this(aspectUnionClass, producer, createServer(serverConfig), serverConfig, urnClass, schemaConfig, trackingManager); } - /** - * Constructor for EbeanLocalDAO with the option to use an alternate Ebean find methodology for record insertion. - * See GCN-38382 - * - * @param aspectUnionClass containing union of all supported aspects. Must be a valid aspect union defined in com.linkedin.metadata.aspect - * @param producer {@link BaseMetadataEventProducer} for the metadata event producer - * @param serverConfig {@link ServerConfig} that defines the configuration of EbeanServer instances - * @param urnClass Class of the entity URN - * @param findMethodology Enum indicating which find configuration to use - */ - public EbeanLocalDAO(@Nonnull Class aspectUnionClass, @Nonnull BaseMetadataEventProducer producer, - @Nonnull ServerConfig serverConfig, @Nonnull Class urnClass, @Nonnull FindMethodology findMethodology) { - this(aspectUnionClass, producer, createServer(serverConfig), serverConfig, urnClass, findMethodology); - } - - /** - * Constructor for EbeanLocalDAO with the option to use an alternate Ebean find methodology for record insertion. - * See GCN-38382 - * - * @param aspectUnionClass containing union of all supported aspects. Must be a valid aspect union defined in com.linkedin.metadata.aspect - * @param producer {@link BaseTrackingMetadataEventProducer} for the metadata event producer - * @param serverConfig {@link ServerConfig} that defines the configuration of EbeanServer instances - * @param urnClass Class of the entity URN - * @param findMethodology Enum indicating which find configuration to use - * @param trackingManager {@link BaseTrackingManager} tracking manager for producing tracking requests - */ - public EbeanLocalDAO(@Nonnull Class aspectUnionClass, - @Nonnull BaseTrackingMetadataEventProducer producer, @Nonnull ServerConfig serverConfig, - @Nonnull Class urnClass, @Nonnull FindMethodology findMethodology, - @Nonnull BaseTrackingManager trackingManager) { - this(aspectUnionClass, producer, createServer(serverConfig), serverConfig, urnClass, findMethodology, trackingManager); - } - /** * Constructor for EbeanLocalDAO. * @@ -439,28 +396,11 @@ private EbeanLocalDAO(@Nonnull Class aspectUnionClass, @Nonnull Ba } } - private EbeanLocalDAO(@Nonnull Class aspectUnionClass, @Nonnull BaseMetadataEventProducer producer, - @Nonnull EbeanServer server, @Nonnull ServerConfig serverConfig, @Nonnull Class urnClass, @Nonnull FindMethodology findMethodology) { - this(aspectUnionClass, producer, server, urnClass); - _findMethodology = findMethodology; - } - - private EbeanLocalDAO(@Nonnull Class aspectUnionClass, - @Nonnull BaseTrackingMetadataEventProducer producer, @Nonnull EbeanServer server, - @Nonnull ServerConfig serverConfig, @Nonnull Class urnClass, @Nonnull FindMethodology findMethodology, - @Nonnull BaseTrackingManager trackingManager) { - this(aspectUnionClass, producer, server, urnClass, trackingManager); - _findMethodology = findMethodology; - } - - // Only called in testing (test all possible combos of SchemaConfig, FindMethodology) @VisibleForTesting EbeanLocalDAO(@Nonnull Class aspectUnionClass, @Nonnull BaseMetadataEventProducer producer, @Nonnull EbeanServer server, @Nonnull ServerConfig serverConfig, @Nonnull Class urnClass, - @Nonnull SchemaConfig schemaConfig, - @Nonnull FindMethodology findMethodology, @Nonnull EBeanDAOConfig ebeanDAOConfig) { + @Nonnull SchemaConfig schemaConfig, @Nonnull EBeanDAOConfig ebeanDAOConfig) { this(aspectUnionClass, producer, server, serverConfig, urnClass, schemaConfig); - _findMethodology = findMethodology; if (schemaConfig != SchemaConfig.OLD_SCHEMA_ONLY) { _localAccess = new EbeanLocalAccess<>(server, serverConfig, urnClass, _urnPathExtractor, ebeanDAOConfig.isNonDollarVirtualColumnsEnabled()); } @@ -805,18 +745,7 @@ public List backfillLo if (_schemaConfig == SchemaConfig.OLD_SCHEMA_ONLY || _schemaConfig == SchemaConfig.DUAL_SCHEMA) { final String aspectName = ModelUtils.getAspectName(aspectClass); final PrimaryKey key = new PrimaryKey(urn.toString(), aspectName, LATEST_VERSION); - if (_findMethodology == FindMethodology.DIRECT_SQL) { - result = findLatestMetadataAspect(_server, urn, aspectClass); - if (result == null) { - // Attempt 1: retry - result = _server.find(EbeanMetadataAspect.class, key); - if (log.isDebugEnabled()) { - log.debug("Attempt 1: Retried on {}, {}", urn, result); - } - } - } else { - result = _server.find(EbeanMetadataAspect.class, key); - } + result = _server.find(EbeanMetadataAspect.class, key); } else { // for new schema, get latest data from the new schema entity table. (Resolving the read de-coupling issue) final List results = diff --git a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalDAOTest.java b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalDAOTest.java index e6c27f216..2c0c78583 100644 --- a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalDAOTest.java +++ b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalDAOTest.java @@ -12,7 +12,6 @@ import com.linkedin.data.template.StringArray; import com.linkedin.metadata.aspect.AuditedAspect; import com.linkedin.metadata.backfill.BackfillMode; -import com.linkedin.metadata.dao.EbeanLocalDAO.FindMethodology; import com.linkedin.metadata.dao.EbeanLocalDAO.SchemaConfig; import com.linkedin.metadata.dao.EbeanMetadataAspect.PrimaryKey; import com.linkedin.metadata.dao.builder.BaseLocalRelationshipBuilder; @@ -142,9 +141,6 @@ public class EbeanLocalDAOTest { // run the tests 1 time for each of EbeanLocalDAO.SchemaConfig values (3 total) private final SchemaConfig _schemaConfig; - // run the tests 1 time for each of EbeanLocalDAO.FindMethodology values (3 total) - private final FindMethodology _findMethodology; - private final boolean _enableChangeLog; private static final String NEW_SCHEMA_CREATE_ALL_SQL = "ebean-local-dao-create-all.sql"; @@ -161,11 +157,10 @@ public class EbeanLocalDAOTest { .setCriteria(new LocalRelationshipCriterionArray()).setDirection(RelationshipDirection.OUTGOING); @Factory(dataProvider = "inputList") - public EbeanLocalDAOTest(SchemaConfig schemaConfig, FindMethodology findMethodology, boolean enableChangeLog, + public EbeanLocalDAOTest(SchemaConfig schemaConfig, boolean enableChangeLog, boolean nonDollarVirtualColumnEnabled) { _eBeanDAOConfig.setNonDollarVirtualColumnsEnabled(nonDollarVirtualColumnEnabled); _schemaConfig = schemaConfig; - _findMethodology = findMethodology; _enableChangeLog = enableChangeLog; } @@ -183,20 +178,14 @@ public static Object[][] inputList() { return new Object[][]{ // tests with change history enabled (legacy mode) - {SchemaConfig.OLD_SCHEMA_ONLY, FindMethodology.UNIQUE_ID, true, true}, - {SchemaConfig.NEW_SCHEMA_ONLY, FindMethodology.UNIQUE_ID, true, true}, - {SchemaConfig.DUAL_SCHEMA, FindMethodology.UNIQUE_ID, true, true}, - {SchemaConfig.OLD_SCHEMA_ONLY, FindMethodology.DIRECT_SQL, true, false}, - {SchemaConfig.NEW_SCHEMA_ONLY, FindMethodology.DIRECT_SQL, true, false}, - {SchemaConfig.DUAL_SCHEMA, FindMethodology.DIRECT_SQL, true, false}, + {SchemaConfig.OLD_SCHEMA_ONLY, true, true}, + {SchemaConfig.NEW_SCHEMA_ONLY, true, true}, + {SchemaConfig.DUAL_SCHEMA, true, false}, // tests with change history disabled (cold-archive mode) - {SchemaConfig.OLD_SCHEMA_ONLY, FindMethodology.UNIQUE_ID, false, true}, - {SchemaConfig.NEW_SCHEMA_ONLY, FindMethodology.UNIQUE_ID, false, true}, - {SchemaConfig.DUAL_SCHEMA, FindMethodology.UNIQUE_ID, false, true}, - {SchemaConfig.OLD_SCHEMA_ONLY, FindMethodology.DIRECT_SQL, false, false}, - {SchemaConfig.NEW_SCHEMA_ONLY, FindMethodology.DIRECT_SQL, false, false}, - {SchemaConfig.DUAL_SCHEMA, FindMethodology.DIRECT_SQL, false, false}, + {SchemaConfig.OLD_SCHEMA_ONLY, false, true}, + {SchemaConfig.NEW_SCHEMA_ONLY, false, false}, + {SchemaConfig.DUAL_SCHEMA, false, false}, }; } @@ -229,7 +218,7 @@ public void setupServer() { private EbeanLocalDAO createDao(@Nonnull EbeanServer server, @Nonnull Class urnClass) { EbeanLocalDAO dao = new EbeanLocalDAO<>(EntityAspectUnion.class, _mockProducer, server, - EmbeddedMariaInstance.SERVER_CONFIG_MAP.get(_server.getName()), urnClass, _schemaConfig, _findMethodology, _eBeanDAOConfig); + EmbeddedMariaInstance.SERVER_CONFIG_MAP.get(_server.getName()), urnClass, _schemaConfig, _eBeanDAOConfig); // Since we added a_urn columns to both metadata_entity_foo and metadata_entity_bar tables in the SQL initialization scripts, // it is required that we set non-default UrnPathExtractors for the corresponding DAOs when initialized. if (urnClass == FooUrn.class) {