From ceb5ebebc6804ce48d69c2895952629f69b8c1da Mon Sep 17 00:00:00 2001 From: Rakhi Agrawal Date: Fri, 15 Aug 2025 12:30:41 -0700 Subject: [PATCH] =?UTF-8?q?Revert=20"Remove=20service=20identity=20as=20cu?= =?UTF-8?q?stom=20property=20in=20server=20config=20for=20Hikar=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit c0edcaf434bc7c15d01b38af09733c2aa10b70dd. --- .../metadata/dao/EbeanLocalAccess.java | 13 +++------- ...calAccessTestWithoutServiceIdentifier.java | 2 +- .../metadata/dao/EbeanLocalDAOTest.java | 22 ++-------------- .../dao/FlywaySchemaEvolutionManagerTest.java | 25 ++----------------- .../dao/utils/EmbeddedMariaInstance.java | 7 +++++- ...st.conf => test-EbeanLocalAccessTest.conf} | 0 ...OTest.conf => test-EbeanLocalDAOTest.conf} | 0 ...t-EbeanLocalRelationshipQueryDAOTest.conf} | 0 ...est-FlywaySchemaEvolutionManagerTest.conf} | 0 9 files changed, 15 insertions(+), 54 deletions(-) rename dao-impl/ebean-dao/src/test/resources/{EbeanLocalAccessTest-EbeanLocalAccessTest.conf => test-EbeanLocalAccessTest.conf} (100%) rename dao-impl/ebean-dao/src/test/resources/{EbeanLocalDAOTest-EbeanLocalDAOTest.conf => test-EbeanLocalDAOTest.conf} (100%) rename dao-impl/ebean-dao/src/test/resources/{EbeanLocalRelationshipQueryDAOTest-EbeanLocalRelationshipQueryDAOTest.conf => test-EbeanLocalRelationshipQueryDAOTest.conf} (100%) rename dao-impl/ebean-dao/src/test/resources/{FlywaySchemaEvolutionManagerTest-FlywaySchemaEvolutionManagerTest.conf => test-FlywaySchemaEvolutionManagerTest.conf} (100%) diff --git a/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalAccess.java b/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalAccess.java index 408f08f0c..be6036ccd 100644 --- a/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalAccess.java +++ b/dao-impl/ebean-dao/src/main/java/com/linkedin/metadata/dao/EbeanLocalAccess.java @@ -70,7 +70,7 @@ public class EbeanLocalAccess implements IEbeanLocalAccess private static final int DEFAULT_PAGE_SIZE = 1000; private static final String ASPECT_JSON_PLACEHOLDER = "__PLACEHOLDER__"; private static final String DEFAULT_ACTOR = "urn:li:principal:UNKNOWN"; - private static final String EBEAN_SERVER_CONFIG = "EbeanServerConfig"; + private static final String SERVICE_IDENTIFIER = "SERVICE_IDENTIFIER"; // key: table_name, // value: Set(column1, column2, column3 ...) @@ -623,14 +623,9 @@ private String toJsonString(@Nonnull URN urn) { @Nonnull private SchemaEvolutionManager createSchemaEvolutionManager(@Nonnull ServerConfig serverConfig) { - - String name = serverConfig.getName(); - String identifier = null; - - if (name != null && name.endsWith(EBEAN_SERVER_CONFIG)) { - identifier = name.substring(0, name.length() - EBEAN_SERVER_CONFIG.length()); - } - + String identifier = serverConfig.getDataSourceConfig().getCustomProperties() != null + ? serverConfig.getDataSourceConfig().getCustomProperties().getOrDefault(SERVICE_IDENTIFIER, null) + : null; SchemaEvolutionManager.Config config = new SchemaEvolutionManager.Config( serverConfig.getDataSourceConfig().getUrl(), serverConfig.getDataSourceConfig().getPassword(), diff --git a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalAccessTestWithoutServiceIdentifier.java b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalAccessTestWithoutServiceIdentifier.java index 21fef1bb9..20118988e 100644 --- a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalAccessTestWithoutServiceIdentifier.java +++ b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/EbeanLocalAccessTestWithoutServiceIdentifier.java @@ -45,7 +45,7 @@ /** * This class tests have excatly the same content as EbeanLocalAccessTest, except with a different DB server config. - * It is expected to read default EbeanLocalAccessTest.conf file rather than EbeanLocalAccessTest-EbeanLocalAccessTest.conf. + * It is expected to read default EbeanLocalAccessTest.conf file rather than test-EbeanLocalAccessTest.conf. */ public class EbeanLocalAccessTestWithoutServiceIdentifier { 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 cc97b627f..48fa71b46 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 @@ -149,7 +149,6 @@ public class EbeanLocalDAOTest { private static final String GMA_DROP_ALL_SQL = "gma-drop-all.sql"; private static final String CREATE_ALL_WITH_NON_DOLLAR_VIRTUAL_COLUMN_SQL = "ebean-local-dao-create-all-with-non-dollar-virtual-column-names.sql"; - private static final String EBEAN_SERVER_CONFIG = "EbeanServerConfig"; private final EBeanDAOConfig _eBeanDAOConfig = new EBeanDAOConfig(); private static final LocalRelationshipFilter EMPTY_FILTER = new LocalRelationshipFilter().setCriteria(new LocalRelationshipCriterionArray()); @@ -4090,7 +4089,7 @@ private void addIndex(Urn urn, String aspectName, String pathName, Object val) { _eBeanDAOConfig.isNonDollarVirtualColumnsEnabled()); // e.g. i_aspectfoo$path1$value1 String checkColumnExistance = String.format("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '%s' AND" - + " TABLE_NAME = '%s' AND COLUMN_NAME = '%s'", getDatabaseName(), getTableName(urn), fullIndexColumnName); + + " TABLE_NAME = '%s' AND COLUMN_NAME = '%s'", _server.getName(), getTableName(urn), fullIndexColumnName); if (_server.createSqlQuery(checkColumnExistance).findList().isEmpty()) { String sqlUpdate = String.format("ALTER TABLE %s ADD COLUMN %s VARCHAR(255);", getTableName(urn), fullIndexColumnName); @@ -4098,7 +4097,7 @@ private void addIndex(Urn urn, String aspectName, String pathName, Object val) { } checkColumnExistance = String.format("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '%s' AND" - + " TABLE_NAME = '%s' AND COLUMN_NAME = '%s'", getDatabaseName(), getTableName(urn), aspectColumnName); + + " TABLE_NAME = '%s' AND COLUMN_NAME = '%s'", _server.getName(), getTableName(urn), aspectColumnName); // similarly for index columns (i_*), we need to add any new aspect columns (a_*) if (aspectColumnName != null && _server.createSqlQuery(checkColumnExistance).findList().isEmpty()) { String sqlUpdate = String.format("ALTER TABLE %s ADD COLUMN %s VARCHAR(255);", getTableName(urn), aspectColumnName); @@ -4237,21 +4236,4 @@ public void testExtractOptimisticLockForAspectFromIngestionParamsIfPossibleAspec assertNull(result); } - - /** - * Returns the name of the database by removing the Ebean server configuration suffix - * from the server name. If the server name does not end with the expected suffix, - * an IllegalStateException is thrown. - * - * @return the database name without the Ebean server configuration suffix. - * @throws IllegalStateException if the server name does not end with the Ebean server configuration suffix. - */ - private String getDatabaseName() { - String name = _server.getName(); - if (name != null && name.endsWith(EBEAN_SERVER_CONFIG)) { - return name.substring(0, name.length() - EBEAN_SERVER_CONFIG.length()); - } else { - throw new IllegalStateException("Server name does not end with '" + EBEAN_SERVER_CONFIG + "': " + name); - } - } } diff --git a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/FlywaySchemaEvolutionManagerTest.java b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/FlywaySchemaEvolutionManagerTest.java index 585a069bd..823840937 100644 --- a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/FlywaySchemaEvolutionManagerTest.java +++ b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/FlywaySchemaEvolutionManagerTest.java @@ -18,8 +18,6 @@ public class FlywaySchemaEvolutionManagerTest { private FlywaySchemaEvolutionManager _schemaEvolutionManager; private EbeanServer _server; - private static final String EBEAN_SERVER_CONFIG = "EbeanServerConfig"; - @BeforeClass public void init() throws IOException { _server = EmbeddedMariaInstance.getServer(FlywaySchemaEvolutionManagerTest.class.getSimpleName()); @@ -29,7 +27,7 @@ public void init() throws IOException { EmbeddedMariaInstance.SERVER_CONFIG_MAP.get(_server.getName()).getDataSourceConfig().getUrl(), EmbeddedMariaInstance.SERVER_CONFIG_MAP.get(_server.getName()).getDataSourceConfig().getPassword(), EmbeddedMariaInstance.SERVER_CONFIG_MAP.get(_server.getName()).getDataSourceConfig().getUsername(), - extractServiceIdentifier() + EmbeddedMariaInstance.SERVER_CONFIG_MAP.get(_server.getName()).getDataSourceConfig().getCustomProperties().get("SERVICE_IDENTIFIER") ); _schemaEvolutionManager = new FlywaySchemaEvolutionManager(config); @@ -59,7 +57,7 @@ public void testSchemaUpToDate() { private boolean checkTableExists(String tableName) { String checkTableExistsSql = String.format("SELECT count(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = '%s' AND" - + " TABLE_NAME = '%s'", getDatabaseName(), tableName); + + " TABLE_NAME = '%s'", _server.getName(), tableName); return _server.createSqlQuery(checkTableExistsSql).findOne().getInteger("count") == 1; } @@ -101,23 +99,4 @@ public void testGetDatabaseName() throws NoSuchMethodException, InvocationTarget SchemaEvolutionManager.Config config4 = new SchemaEvolutionManager.Config(databaseUrl, "pw", "user", "case4"); assertEquals(method.invoke(_schemaEvolutionManager, config4), "my_first_db"); } - - - private String extractServiceIdentifier() { - String serverName = _server.getName(); - return serverName.substring(0, serverName.indexOf(EBEAN_SERVER_CONFIG)); - } - - /** - * Return the database name associated with the given Ebean server. - * @return the database name - */ - private String getDatabaseName() { - String name = _server.getName(); - if (name != null && name.endsWith(EBEAN_SERVER_CONFIG)) { - return name.substring(0, name.length() - EBEAN_SERVER_CONFIG.length()); - } else { - throw new IllegalStateException("Server name does not end with '" + EBEAN_SERVER_CONFIG + "': " + name); - } - } } diff --git a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/utils/EmbeddedMariaInstance.java b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/utils/EmbeddedMariaInstance.java index b4bcda51a..9ca46f49f 100644 --- a/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/utils/EmbeddedMariaInstance.java +++ b/dao-impl/ebean-dao/src/test/java/com/linkedin/metadata/dao/utils/EmbeddedMariaInstance.java @@ -13,6 +13,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -44,9 +46,12 @@ public static synchronized EbeanServer getServer(String dbSchema) { dataSourceConfig.setPassword(DB_PASS); dataSourceConfig.setUrl(String.format("jdbc:mysql://localhost:%s/%s?allowMultiQueries=true", PORT, dbSchema)); dataSourceConfig.setDriver("com.mysql.cj.jdbc.Driver"); + Map customProperties = new HashMap<>(); + customProperties.put("SERVICE_IDENTIFIER", "test"); + dataSourceConfig.setCustomProperties(customProperties); ServerConfig serverConfig = new ServerConfig(); - serverConfig.setName(dbSchema + "EbeanServerConfig"); + serverConfig.setName(dbSchema); serverConfig.setDataSourceConfig(dataSourceConfig); serverConfig.setDdlGenerate(false); serverConfig.setDdlRun(false); diff --git a/dao-impl/ebean-dao/src/test/resources/EbeanLocalAccessTest-EbeanLocalAccessTest.conf b/dao-impl/ebean-dao/src/test/resources/test-EbeanLocalAccessTest.conf similarity index 100% rename from dao-impl/ebean-dao/src/test/resources/EbeanLocalAccessTest-EbeanLocalAccessTest.conf rename to dao-impl/ebean-dao/src/test/resources/test-EbeanLocalAccessTest.conf diff --git a/dao-impl/ebean-dao/src/test/resources/EbeanLocalDAOTest-EbeanLocalDAOTest.conf b/dao-impl/ebean-dao/src/test/resources/test-EbeanLocalDAOTest.conf similarity index 100% rename from dao-impl/ebean-dao/src/test/resources/EbeanLocalDAOTest-EbeanLocalDAOTest.conf rename to dao-impl/ebean-dao/src/test/resources/test-EbeanLocalDAOTest.conf diff --git a/dao-impl/ebean-dao/src/test/resources/EbeanLocalRelationshipQueryDAOTest-EbeanLocalRelationshipQueryDAOTest.conf b/dao-impl/ebean-dao/src/test/resources/test-EbeanLocalRelationshipQueryDAOTest.conf similarity index 100% rename from dao-impl/ebean-dao/src/test/resources/EbeanLocalRelationshipQueryDAOTest-EbeanLocalRelationshipQueryDAOTest.conf rename to dao-impl/ebean-dao/src/test/resources/test-EbeanLocalRelationshipQueryDAOTest.conf diff --git a/dao-impl/ebean-dao/src/test/resources/FlywaySchemaEvolutionManagerTest-FlywaySchemaEvolutionManagerTest.conf b/dao-impl/ebean-dao/src/test/resources/test-FlywaySchemaEvolutionManagerTest.conf similarity index 100% rename from dao-impl/ebean-dao/src/test/resources/FlywaySchemaEvolutionManagerTest-FlywaySchemaEvolutionManagerTest.conf rename to dao-impl/ebean-dao/src/test/resources/test-FlywaySchemaEvolutionManagerTest.conf