diff options
Diffstat (limited to 'mdbc-server/src/main/java/org/onap/music/mdbc/mixins/MusicMixin.java')
-rw-r--r-- | mdbc-server/src/main/java/org/onap/music/mdbc/mixins/MusicMixin.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/mdbc-server/src/main/java/org/onap/music/mdbc/mixins/MusicMixin.java b/mdbc-server/src/main/java/org/onap/music/mdbc/mixins/MusicMixin.java index 39b1e21..e41b7c0 100644 --- a/mdbc-server/src/main/java/org/onap/music/mdbc/mixins/MusicMixin.java +++ b/mdbc-server/src/main/java/org/onap/music/mdbc/mixins/MusicMixin.java @@ -2121,9 +2121,17 @@ public class MusicMixin implements MusicInterface { } @Override - public OwnershipReturn mergeLatestRows(Dag extendedDag, List<MusicRangeInformationRow> latestRows, List<Range> ranges, - Map<UUID,LockResult> locks, UUID ownershipId) throws MDBCServiceException{ + public OwnershipReturn mergeLatestRowsIfNecessary(Dag extendedDag, List<MusicRangeInformationRow> latestRows, + List<Range> ranges, Map<UUID, LockResult> locks, UUID ownershipId) throws MDBCServiceException { recoverFromFailureAndUpdateDag(extendedDag,latestRows,ranges,locks); + if (latestRows.size()==1) { + //reuse current row if possible + MusicRangeInformationRow row = latestRows.get(0); + LockResult lockresult = locks.get(row.getPartitionIndex()); + if (lockresult!=null) { + return new OwnershipReturn(ownershipId, lockresult.getLockId(), row.getPartitionIndex(), ranges, extendedDag); + } + } List<MusicRangeInformationRow> changed = setReadOnlyAnyDoubleRow(extendedDag, latestRows,locks); releaseLocks(changed, locks); MusicRangeInformationRow row = createAndAssignLock(ranges); |