aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/music/service
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/music/service')
-rw-r--r--src/main/java/org/onap/music/service/MusicCoreService.java9
-rw-r--r--src/main/java/org/onap/music/service/impl/MusicCassaCore.java20
2 files changed, 22 insertions, 7 deletions
diff --git a/src/main/java/org/onap/music/service/MusicCoreService.java b/src/main/java/org/onap/music/service/MusicCoreService.java
index 1ecb2ee1..b3226906 100644
--- a/src/main/java/org/onap/music/service/MusicCoreService.java
+++ b/src/main/java/org/onap/music/service/MusicCoreService.java
@@ -133,15 +133,10 @@ public interface MusicCoreService {
public void destroyLockRef(String lockId) throws MusicLockingException;
- //public MusicLockState destroyLockRef(String fullyQualifiedKey, String lockReference); // lock name, lock id
-
- //public MusicLockState voluntaryReleaseLock(String fullyQualifiedKey, String lockReference)
- // throws MusicLockingException;// lock name,lock id
-
public void deleteLock(String lockName) throws MusicLockingException;
- //public MusicLockState forciblyReleaseLock(String fullyQualifiedKey, String lockReference) throws MusicLockingException, MusicServiceException, MusicQueryException;
-
+ public ReturnType promoteLock(String lockIdToPromote) throws MusicLockingException;
+
public List<String> getLockQueue(String fullyQualifiedKey)
throws MusicServiceException, MusicQueryException, MusicLockingException;
diff --git a/src/main/java/org/onap/music/service/impl/MusicCassaCore.java b/src/main/java/org/onap/music/service/impl/MusicCassaCore.java
index 0c30cc74..0d2e3f0a 100644
--- a/src/main/java/org/onap/music/service/impl/MusicCassaCore.java
+++ b/src/main/java/org/onap/music/service/impl/MusicCassaCore.java
@@ -158,6 +158,26 @@ public class MusicCassaCore implements MusicCoreService {
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken to create lock reference:" + (end - start) + " ms");
return lockReference;
}
+
+ public ReturnType promoteLock(String lockId) throws MusicLockingException {
+ String[] splitString = lockId.split("\\.");
+ String keyspace = splitString[0].substring(1);//remove '$'
+ String table = splitString[1];
+ String primaryKeyValue = splitString[2].substring(0, splitString[2].lastIndexOf("$"));
+ String localFullyQualifiedKey = lockId.substring(1, lockId.lastIndexOf("$"));
+ String lockRef = lockId.substring(lockId.lastIndexOf("$")+1); //lockRef is "$" to end
+
+ logger.info(EELFLoggerDelegate.applicationLogger,"Attempting to promote lock " + lockId);
+
+ try {
+ return getLockingServiceHandle().promoteLock(keyspace, table, primaryKeyValue, lockRef);
+ } catch (MusicServiceException e) {
+ throw new MusicLockingException("Unable to promote lock. ", e);
+ } catch (MusicQueryException e) {
+ throw new MusicLockingException("Unable to promote lock. ", e);
+ }
+
+ }
public ReturnType acquireLockWithLease(String fullyQualifiedKey, String lockReference, long leasePeriod)