package org.opendaylight.genius.lockmanager;
import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import java.util.concurrent.CompletableFuture;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TryLockInput;
Optional<Lock> result = tx.read(LogicalDatastoreType.OPERATIONAL, lockInstanceIdentifier).get();
if (!result.isPresent()) {
LOG.debug("{} is already unlocked", lockName);
- return;
+ tx.cancel();
+ } else {
+ tx.delete(LogicalDatastoreType.OPERATIONAL, lockInstanceIdentifier);
+ tx.submit().get();
}
- tx.delete(LogicalDatastoreType.OPERATIONAL, lockInstanceIdentifier);
- CheckedFuture<Void, TransactionCommitFailedException> futures = tx.submit();
- futures.get();
} catch (InterruptedException | ExecutionException e) {
LOG.error("In unlock unable to unlock: {}. Reason :", lockName, e);
}
if (!result.isPresent()) {
LOG.debug("Writing lock lockData {}", lockData);
tx.put(LogicalDatastoreType.OPERATIONAL, lockInstanceIdentifier, lockData, true);
- CheckedFuture<Void, TransactionCommitFailedException> futures = tx.submit();
- futures.get();
+ tx.submit().get();
return true;
+ } else {
+ tx.cancel();
+ return false;
}
- return false;
}
}
}