aboutsummaryrefslogtreecommitdiffstats
path: root/feature-distributed-locking/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'feature-distributed-locking/src/main')
-rw-r--r--feature-distributed-locking/src/main/feature/config/feature-distributed-locking.properties7
-rw-r--r--feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockManager.java12
-rw-r--r--feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockProperties.java41
3 files changed, 13 insertions, 47 deletions
diff --git a/feature-distributed-locking/src/main/feature/config/feature-distributed-locking.properties b/feature-distributed-locking/src/main/feature/config/feature-distributed-locking.properties
index c609c8f9..9acea3c0 100644
--- a/feature-distributed-locking/src/main/feature/config/feature-distributed-locking.properties
+++ b/feature-distributed-locking/src/main/feature/config/feature-distributed-locking.properties
@@ -19,7 +19,12 @@
###
#Database properties
-javax.persistence.jdbc.driver= org.mariadb.jdbc.Driver
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
javax.persistence.jdbc.url=jdbc:mariadb://${env:SQL_HOST}:3306/pooling
javax.persistence.jdbc.user=${env:SQL_USER}
javax.persistence.jdbc.password=${env:SQL_PASSWORD}
+
+# default property values are commented out
+#distributed.locking.expire.check.seconds=900
+#distributed.locking.retry.seconds=60
+#distributed.locking.max.retries=2
diff --git a/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockManager.java b/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockManager.java
index 523c0d93..7ee786b9 100644
--- a/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockManager.java
+++ b/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockManager.java
@@ -24,6 +24,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.SQLTransientException;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
@@ -77,8 +78,7 @@ import org.slf4j.LoggerFactory;
* instance.</li>
* </dl>
*/
-public class DistributedLockManager
- implements PolicyResourceLockManager, PolicyEngineFeatureApi {
+public class DistributedLockManager implements PolicyResourceLockManager, PolicyEngineFeatureApi {
private static final Logger logger = LoggerFactory.getLogger(DistributedLockManager.class);
@@ -396,6 +396,8 @@ public class DistributedLockManager
* Distributed Lock implementation.
*/
public static class DistributedLock extends LockImpl {
+ private static final String SQL_FAILED_MSG = "request failed for lock: {}";
+
private static final long serialVersionUID = 1L;
/**
@@ -702,9 +704,9 @@ public class DistributedLockManager
req.run();
} catch (SQLException e) {
- logger.warn("request failed for lock: {}", this, e);
+ logger.warn(SQL_FAILED_MSG, this, e);
- if (feature.featProps.isTransient(e.getErrorCode())) {
+ if (e.getCause() instanceof SQLTransientException) {
// retry the request a little later
rescheduleRequest(req);
} else {
@@ -712,7 +714,7 @@ public class DistributedLockManager
}
} catch (RuntimeException e) {
- logger.warn("request failed for lock: {}", this, e);
+ logger.warn(SQL_FAILED_MSG, this, e);
removeFromMap();
}
}
diff --git a/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockProperties.java b/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockProperties.java
index f470c8e2..fff19447 100644
--- a/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockProperties.java
+++ b/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockProperties.java
@@ -20,10 +20,7 @@
package org.onap.policy.distributed.locking;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.Properties;
-import java.util.Set;
import lombok.Getter;
import lombok.Setter;
import org.onap.policy.common.utils.properties.BeanConfigurator;
@@ -40,7 +37,6 @@ public class DistributedLockProperties {
public static final String DB_URL = "javax.persistence.jdbc.url";
public static final String DB_USER = "javax.persistence.jdbc.user";
public static final String DB_PASS = "javax.persistence.jdbc.password";
- public static final String TRANSIENT_ERROR_CODES = PREFIX + "transient.error.codes";
public static final String EXPIRE_CHECK_SEC = PREFIX + "expire.check.seconds";
public static final String RETRY_SEC = PREFIX + "retry.seconds";
public static final String MAX_RETRIES = PREFIX + "max.retries";
@@ -70,16 +66,6 @@ public class DistributedLockProperties {
private String dbPwd;
/**
- * Vendor-specific error codes that are "transient", meaning they may go away if the
- * command is repeated (e.g., connection issue), as opposed to something like a syntax
- * error or a duplicate key.
- */
- @Property(name = TRANSIENT_ERROR_CODES)
- private String errorCodeStrings;
-
- private final Set<Integer> transientErrorCodes;
-
- /**
* Time, in seconds, to wait between checks for expired locks.
*/
@Property(name = EXPIRE_CHECK_SEC, defaultValue = "900")
@@ -105,32 +91,5 @@ public class DistributedLockProperties {
*/
public DistributedLockProperties(Properties props) throws PropertyException {
new BeanConfigurator().configureFromProperties(this, props);
-
- Set<Integer> set = new HashSet<>();
- for (String text : errorCodeStrings.split(",")) {
- text = text.trim();
- if (text.isEmpty()) {
- continue;
- }
-
- try {
- set.add(Integer.valueOf(text));
-
- } catch (NumberFormatException e) {
- throw new PropertyException(TRANSIENT_ERROR_CODES, "errorCodeStrings", e);
- }
- }
-
- transientErrorCodes = Collections.unmodifiableSet(set);
- }
-
- /**
- * Determines if an error is transient.
- *
- * @param errorCode error code to check
- * @return {@code true} if the error is transient, {@code false} otherwise
- */
- public boolean isTransient(int errorCode) {
- return transientErrorCodes.contains(errorCode);
}
}