public void run() throws Exception { MultiMapContainer container = getOrCreateContainer(); if (!container.txnLock(dataKey, caller, threadId, ttl + LOCK_EXTENSION_TIME_IN_MILLIS)) { throw new TransactionException( "Lock is not owned by the transaction! -> " + container.getLockOwnerInfo(dataKey)); } }
@Override public void run() throws Exception { begin = Clock.currentTimeMillis(); MultiMapContainer container = getOrCreateContainer(); MultiMapValue multiMapValue = container.getOrCreateMultiMapValue(dataKey); response = true; if (multiMapValue.containsRecordId(recordId)) { response = false; return; } Collection<MultiMapRecord> coll = multiMapValue.getCollection(false); MultiMapRecord record = new MultiMapRecord(recordId, isBinary() ? value : toObject(value)); coll.add(record); }
public void run() throws Exception { MultiMapContainer container = getOrCreateContainer(); recordId = container.nextId(); MultiMapRecord record = new MultiMapRecord(recordId, isBinary() ? value : toObject(value)); Collection<MultiMapRecord> coll = container.getOrCreateMultiMapWrapper(dataKey).getCollection(false); if (index == -1) { response = coll.add(record); } else { try { ((List<MultiMapRecord>) coll).add(index, record); response = true; } catch (IndexOutOfBoundsException e) { response = e; } } }
@Override public void run() throws Exception { begin = Clock.currentTimeMillis(); MultiMapContainer container = getOrCreateContainer(); MultiMapValue multiMapValue = container.getMultiMapValueOrNull(dataKey); response = true; if (multiMapValue == null || !multiMapValue.containsRecordId(recordId)) { response = false; return; } Collection<MultiMapRecord> coll = multiMapValue.getCollection(false); Iterator<MultiMapRecord> iter = coll.iterator(); while (iter.hasNext()) { if (iter.next().getRecordId() == recordId) { iter.remove(); break; } } if (coll.isEmpty()) { delete(); } }
@Override public void run() throws Exception { MultiMapContainer container = getOrCreateContainer(); ((MultiMapService) getService()).getLocalMultiMapStatsImpl(name).incrementOtherOperations(); response = new MultiMapResponse(container.keySet(), getValueCollectionType(container)); }