From c4d5badacfd5154d177db6494a628995eecfca81 Mon Sep 17 00:00:00 2001 From: Abraham Elmahrek Date: Thu, 4 Dec 2014 00:02:01 -0800 Subject: [PATCH] SQOOP-1812: Sqoop2: Repository upgrade issue will prevent server startup (Qian Xu via Abraham Elmahrek) --- .../repository/derby/DerbyRepositoryHandler.java | 5 ++++- .../derby/TestRespositorySchemaUpgrade.java | 14 +++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java index 907978fc..7ba851cb 100644 --- a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java +++ b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java @@ -204,8 +204,11 @@ public int detectRepositoryVersion(Connection conn) { */ @Override public void createOrUpgradeRepository(Connection conn) { - int repositoryVersion = detectRepositoryVersion(conn); + if (repositoryVersion == DerbyRepoConstants.LATEST_DERBY_REPOSITORY_VERSION) { + return; + } + if(repositoryVersion <= 0) { runQuery(QUERY_CREATE_SCHEMA_SQOOP, conn); runQuery(QUERY_CREATE_TABLE_SQ_CONNECTOR, conn); diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java index 928c34a6..934056f4 100644 --- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java +++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java @@ -45,12 +45,24 @@ public void testHasLatestRepositoryVersion() throws Exception { } @Test - public void testCreateorUpdateRepositorySchema() throws Exception { + public void testCreatorUpdateRepositorySchema() throws Exception { assertFalse(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); handler.createOrUpgradeRepository(getDerbyDatabaseConnection()); assertTrue(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); } + @Test + public void testDoubleUpdateRepositorySchema() throws Exception { + // Setup + assertFalse(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); + handler.createOrUpgradeRepository(getDerbyDatabaseConnection()); + assertTrue(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); + + // Exercise and verify + handler.createOrUpgradeRepository(getDerbyDatabaseConnection()); + assertTrue(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); + } + @Test(expected = SQLIntegrityConstraintViolationException.class) public void testUpgradeVersion4WithNonUniqueJobNameFailure() throws Exception { super.createOrUpgradeSchema(4);