You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2013/07/02 21:55:29 UTC
git commit: SQOOP-997: Sqoop2: Upgrade: Provide ability to disable
the automatic upgrade
Updated Branches:
refs/heads/sqoop2 226044d3b -> 8c74223b5
SQOOP-997: Sqoop2: Upgrade: Provide ability to disable the automatic upgrade
(Mengwei Ding via Jarek Jarcec Cecho)
Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/8c74223b
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/8c74223b
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/8c74223b
Branch: refs/heads/sqoop2
Commit: 8c74223b593a142e0317528d75a542d99762a333
Parents: 226044d
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Tue Jul 2 12:54:44 2013 -0700
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Tue Jul 2 12:54:44 2013 -0700
----------------------------------------------------------------------
.../sqoop/connector/ConnectorManager.java | 13 +++++++++---
.../sqoop/core/ConfigurationConstants.java | 5 +++++
.../sqoop/framework/FrameworkManager.java | 9 +++++++-
.../apache/sqoop/repository/JdbcRepository.java | 22 ++++++++++++++------
.../org/apache/sqoop/repository/Repository.java | 6 ++++--
.../sqoop/repository/RepositoryError.java | 3 +++
dist/src/main/server/conf/sqoop.properties | 10 +++++++++
7 files changed, 56 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/8c74223b/core/src/main/java/org/apache/sqoop/connector/ConnectorManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/connector/ConnectorManager.java b/core/src/main/java/org/apache/sqoop/connector/ConnectorManager.java
index 0540f6b..fa91d02 100644
--- a/core/src/main/java/org/apache/sqoop/connector/ConnectorManager.java
+++ b/core/src/main/java/org/apache/sqoop/connector/ConnectorManager.java
@@ -54,6 +54,11 @@ public class ConnectorManager implements Reconfigurable {
private static ConnectorManager instance;
/**
+ * Default connector auto upgrade option value
+ */
+ private static boolean DEFAULT_AUTO_UPGRADE = false;
+
+ /**
* Create default object by default.
*
* Every Sqoop server application needs one so this should not be performance issue.
@@ -185,7 +190,9 @@ public class ConnectorManager implements Reconfigurable {
throw new SqoopException(ConnectorError.CONN_0001, ex);
}
- registerConnectors();
+ boolean autoUpgrade = SqoopConfiguration.getInstance().getContext().getBoolean(
+ ConfigurationConstants.CONNECTOR_AUTO_UPGRADE, DEFAULT_AUTO_UPGRADE);
+ registerConnectors(autoUpgrade);
SqoopConfiguration.getInstance().getProvider().registerListener(new CoreConfigurationListener(this));
@@ -194,7 +201,7 @@ public class ConnectorManager implements Reconfigurable {
}
}
- private synchronized void registerConnectors() {
+ private synchronized void registerConnectors(boolean autoUpgrade) {
Repository repository = RepositoryManager.getInstance().getRepository();
RepositoryTransaction rtx = null;
@@ -205,7 +212,7 @@ public class ConnectorManager implements Reconfigurable {
ConnectorHandler handler = handlerMap.get(name);
MConnector connectorMetadata = handler.getMetadata();
MConnector registeredMetadata =
- repository.registerConnector(connectorMetadata);
+ repository.registerConnector(connectorMetadata, autoUpgrade);
// Set registered metadata instead of connector metadata as they will
// have filled persistent ids. We should be confident at this point that
http://git-wip-us.apache.org/repos/asf/sqoop/blob/8c74223b/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java b/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java
index 838aaaf..f225fcb 100644
--- a/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java
+++ b/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java
@@ -70,6 +70,11 @@ public final class ConfigurationConstants {
public static final String PROPERTIES_PROVIDER_SLEEP =
PREFIX_PROPERTIES_PROVIDER_CONFIG + "sleep";
+ public static final String CONNECTOR_AUTO_UPGRADE =
+ "org.apache.sqoop.connector.autoupgrade";
+
+ public static final String FRAMEWORK_AUTO_UPGRADE =
+ "org.apache.sqoop.framework.autoupgrade";
private ConfigurationConstants() {
// Disable explicit object creation
http://git-wip-us.apache.org/repos/asf/sqoop/blob/8c74223b/core/src/main/java/org/apache/sqoop/framework/FrameworkManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/framework/FrameworkManager.java b/core/src/main/java/org/apache/sqoop/framework/FrameworkManager.java
index a81306b..ad6cd0f 100644
--- a/core/src/main/java/org/apache/sqoop/framework/FrameworkManager.java
+++ b/core/src/main/java/org/apache/sqoop/framework/FrameworkManager.java
@@ -19,6 +19,7 @@ package org.apache.sqoop.framework;
import org.apache.log4j.Logger;
import org.apache.sqoop.connector.spi.MetadataUpgrader;
+import org.apache.sqoop.core.ConfigurationConstants;
import org.apache.sqoop.core.Reconfigurable;
import org.apache.sqoop.core.SqoopConfiguration;
import org.apache.sqoop.core.SqoopConfiguration.CoreConfigurationListener;
@@ -105,6 +106,10 @@ public class FrameworkManager implements Reconfigurable {
*/
private final MetadataUpgrader upgrader;
+ /**
+ * Default framework auto upgrade option value
+ */
+ private static final boolean DEFAULT_AUTO_UPGRADE = false;
public Class getJobConfigurationClass(MJob.Type jobType) {
switch (jobType) {
@@ -142,7 +147,9 @@ public class FrameworkManager implements Reconfigurable {
LOG.trace("Begin submission engine manager initialization");
// Register framework metadata in repository
- mFramework = RepositoryManager.getInstance().getRepository().registerFramework(mFramework);
+ boolean autoUpgrade = SqoopConfiguration.getInstance().getContext().getBoolean(
+ ConfigurationConstants.FRAMEWORK_AUTO_UPGRADE, DEFAULT_AUTO_UPGRADE);
+ mFramework = RepositoryManager.getInstance().getRepository().registerFramework(mFramework, autoUpgrade);
SqoopConfiguration.getInstance().getProvider().registerListener(new CoreConfigurationListener(this));
http://git-wip-us.apache.org/repos/asf/sqoop/blob/8c74223b/core/src/main/java/org/apache/sqoop/repository/JdbcRepository.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/repository/JdbcRepository.java b/core/src/main/java/org/apache/sqoop/repository/JdbcRepository.java
index aa1aa8d..2d9bf4e 100644
--- a/core/src/main/java/org/apache/sqoop/repository/JdbcRepository.java
+++ b/core/src/main/java/org/apache/sqoop/repository/JdbcRepository.java
@@ -154,7 +154,7 @@ public class JdbcRepository extends Repository {
* {@inheritDoc}
*/
@Override
- public MConnector registerConnector(final MConnector mConnector) {
+ public MConnector registerConnector(final MConnector mConnector, final boolean autoUpgrade) {
return (MConnector) doWithConnection(new DoWithConnection() {
@Override
@@ -172,8 +172,13 @@ public class JdbcRepository extends Repository {
// monotonically increasing.
if (result.getUniqueName().equals(mConnector.getUniqueName()) &&
mConnector.getVersion().compareTo(result.getVersion()) > 0) {
- upgradeConnector(result, mConnector);
- return mConnector;
+ if (autoUpgrade) {
+ upgradeConnector(result, mConnector);
+ return mConnector;
+ } else {
+ throw new SqoopException(RepositoryError.JDBCREPO_0026,
+ "Connector: " + mConnector.getUniqueName());
+ }
}
if (!result.equals(mConnector)) {
throw new SqoopException(RepositoryError.JDBCREPO_0013,
@@ -204,7 +209,7 @@ public class JdbcRepository extends Repository {
* {@inheritDoc}
*/
@Override
- public MFramework registerFramework(final MFramework mFramework) {
+ public MFramework registerFramework(final MFramework mFramework, final boolean autoUpgrade) {
return (MFramework) doWithConnection(new DoWithConnection() {
@Override
public Object doIt(Connection conn) {
@@ -216,8 +221,13 @@ public class JdbcRepository extends Repository {
// We're currently not serializing framework version into repository
// so let's just compare the structure to see if we need upgrade.
if(!mFramework.equals(result)) {
- upgradeFramework(mFramework);
- return mFramework;
+ if (autoUpgrade) {
+ upgradeFramework(mFramework);
+ return mFramework;
+ } else {
+ throw new SqoopException(RepositoryError.JDBCREPO_0026,
+ "Framework: " + mFramework.getPersistenceId());
+ }
}
return result;
}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/8c74223b/core/src/main/java/org/apache/sqoop/repository/Repository.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/repository/Repository.java b/core/src/main/java/org/apache/sqoop/repository/Repository.java
index 306bd90..46cb7e6 100644
--- a/core/src/main/java/org/apache/sqoop/repository/Repository.java
+++ b/core/src/main/java/org/apache/sqoop/repository/Repository.java
@@ -81,9 +81,10 @@ public abstract class Repository {
* given connector are already registered with different structure.
*
* @param mConnector the connector metadata to be registered
+ * autoupgrade whether to upgrade framework automatically
* @return Registered connector structure
*/
- public abstract MConnector registerConnector(MConnector mConnector);
+ public abstract MConnector registerConnector(MConnector mConnector, boolean autoUpgrade);
/**
* Search for connector with given name in repository.
@@ -103,9 +104,10 @@ public abstract class Repository {
* given framework are already registered with different structure.
*
* @param mFramework framework metadata to be registered
+ * autoupgrade whether to upgrade framework automatically
* @return Registered connector structure
*/
- public abstract MFramework registerFramework(MFramework mFramework);
+ public abstract MFramework registerFramework(MFramework mFramework, boolean autoUpgrade);
/**
* Save given connection to repository. This connection must not be already
http://git-wip-us.apache.org/repos/asf/sqoop/blob/8c74223b/core/src/main/java/org/apache/sqoop/repository/RepositoryError.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/repository/RepositoryError.java b/core/src/main/java/org/apache/sqoop/repository/RepositoryError.java
index ab5e5a1..c616889 100644
--- a/core/src/main/java/org/apache/sqoop/repository/RepositoryError.java
+++ b/core/src/main/java/org/apache/sqoop/repository/RepositoryError.java
@@ -118,6 +118,9 @@ public enum RepositoryError implements ErrorCode {
/** Invalid submission id **/
JDBCREPO_0025("Given submission id is invalid"),
+ /** Upgrade required but not allowed **/
+ JDBCREPO_0026("Upgrade required but not allowed");
+
;
private final String message;
http://git-wip-us.apache.org/repos/asf/sqoop/blob/8c74223b/dist/src/main/server/conf/sqoop.properties
----------------------------------------------------------------------
diff --git a/dist/src/main/server/conf/sqoop.properties b/dist/src/main/server/conf/sqoop.properties
index 07b148e..76596b4 100755
--- a/dist/src/main/server/conf/sqoop.properties
+++ b/dist/src/main/server/conf/sqoop.properties
@@ -83,6 +83,16 @@ org.apache.sqoop.repository.jdbc.password=
# System properties for embedded Derby configuration
org.apache.sqoop.repository.sysprop.derby.stream.error.file=@LOGDIR@/derbyrepo.log
+#
+# Connector configuration
+#
+org.apache.sqoop.connector.autoupgrade=false
+
+#
+# Framework configuration
+#
+org.apache.sqoop.framework.autoupgrade=false
+
# Sleeping period for reloading configuration file (once a minute)
org.apache.sqoop.core.configuration.provider.properties.sleep=60000