/** * Returns the update operation that corresponds to this operation. For a create operation the * corresponding update op is returned. For all other operations <code>this</code> is returned. */ public Operation getCorrespondingUpdateOp() { if (isCreate()) { switch (this.opDetails) { case OP_DETAILS_SEARCH: return Operation.SEARCH_UPDATE; case OP_DETAILS_LOCAL_LOAD: return Operation.LOCAL_LOAD_UPDATE; case OP_DETAILS_NET_LOAD: return Operation.NET_LOAD_UPDATE; case OP_DETAILS_PUTALL: return Operation.PUTALL_UPDATE; default: return Operation.UPDATE; } } else { return this; } }
private boolean isPutOpCreate() { return getPutOp().isCreate(); }
@Override public void onEvent(final CqEvent aCqEvent) { Operation op = aCqEvent.getBaseOperation(); if (op.isCreate()) { ++this.numCreates; } else if (op.isUpdate()) { ++this.numUpdates; } else if (op.isDestroy()) { ++this.numDestroys; } else { ++this.numOtherOps; } eventList.add(aCqEvent); }
public void toData(DataOutput out) throws IOException { out.writeByte(this.op.ordinal); DataSerializer.writeObject(this.cbArg, out); if (this.op.isEntry()) { DataSerializer.writeObject(this.key, out); if (this.op.isUpdate() || this.op.isCreate()) { out.writeByte(this.deserializationPolicy); DataSerializer.writeByteArray(this.value, out); } } } }
<K> EntryColumnData getEntryColumnData(TableMetaDataView tableMetaData, RegionMapping regionMapping, K key, PdxInstance value, Operation operation) { List<ColumnData> keyColumnData = createKeyColumnDataList(tableMetaData, regionMapping, key); List<ColumnData> valueColumnData = null; if (operation.isCreate() || operation.isUpdate()) { valueColumnData = createValueColumnDataList(tableMetaData, regionMapping, value); } return new EntryColumnData(keyColumnData, valueColumnData); }
public static QueuedOperation createFromData(DataInput in) throws IOException, ClassNotFoundException { Operation op = Operation.fromOrdinal(in.readByte()); Object key = null; byte[] value = null; Object valueObj = null; byte deserializationPolicy = DistributedCacheOperation.DESERIALIZATION_POLICY_NONE; Object cbArg = DataSerializer.readObject(in); if (op.isEntry()) { key = DataSerializer.readObject(in); if (op.isUpdate() || op.isCreate()) { deserializationPolicy = in.readByte(); value = DataSerializer.readByteArray(in); } } return new QueuedOperation(op, key, value, valueObj, deserializationPolicy, cbArg); }
private void setValuesInStatement(PreparedStatement statement, EntryColumnData entryColumnData, Operation operation) throws SQLException { int index = 0; if (operation.isCreate() || operation.isUpdate()) { index = setValuesFromColumnData(statement, entryColumnData.getEntryValueColumnData(), index); } setValuesFromColumnData(statement, entryColumnData.getEntryKeyColumnData(), index); }
private static EnumListenerEvent getEnumListenerEvent(Operation operation) { EnumListenerEvent ele = null; if (operation.isCreate()) { ele = EnumListenerEvent.AFTER_CREATE; } else if (operation.isUpdate()) { ele = EnumListenerEvent.AFTER_UPDATE; } else if (operation.isDestroy()) { ele = EnumListenerEvent.AFTER_DESTROY; } return ele; } }
@Override public Object put(Object key, Object value, byte[] deltaBytes, EntryEventImpl event, Operation op, boolean requireOldValue, Object expectedOldValue, Object callbackArg, boolean isCreate) { recordTXOperation(ServerRegionOperation.PUT, key, value, deltaBytes, event.getEventId(), op, Boolean.valueOf(requireOldValue), expectedOldValue, callbackArg, Boolean.valueOf(isCreate)); Operation operation = op; if (!isCreate && this.region.getDataPolicy() == DataPolicy.EMPTY && op.isCreate() && op != Operation.PUT_IF_ABSENT) { operation = Operation.UPDATE; } if (this.region == null) { return PutOp.execute(this.pool, this.regionName, key, value, deltaBytes, event, operation, requireOldValue, expectedOldValue, callbackArg, this.pool.getPRSingleHopEnabled()); } else { return PutOp.execute(this.pool, this.region, key, value, deltaBytes, event, operation, requireOldValue, expectedOldValue, callbackArg, this.pool.getPRSingleHopEnabled()); } }
@Override public long basicPutPart2(EntryEventImpl event, RegionEntry entry, boolean isInitialized, long lastModified, boolean clearConflict) { boolean isCreate = event.getOperation().isCreate(); boolean set = false; if (isCreate && !event.callbacksInvoked()) { // don't notify clients until all peers have created the region so that // their register-interest operations will be sure to find data event.callbacksInvoked(true); set = true; } long result = super.basicPutPart2(event, entry, isInitialized, lastModified, clearConflict); if (set) { event.callbacksInvoked(false); } if (isCreate) { buildDynamicRegion(event); } return result; }
private void firePendingCallbacks(List<EntryEventImpl> callbacks) { Iterator<EntryEventImpl> ci = callbacks.iterator(); while (ci.hasNext()) { EntryEventImpl ee = ci.next(); try { if (ee.getOperation().isDestroy()) { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_DESTROY, ee, true); } else if (ee.getOperation().isInvalidate()) { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_INVALIDATE, ee, true); } else if (ee.getOperation().isCreate()) { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_CREATE, ee, true); } else { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_UPDATE, ee, true); } } finally { ee.release(); } } }
private void updateLru() { if (!isClearOccurred()) { if (getEvent().getOperation().isCreate()) { getRegionMap().lruEntryCreate(getRegionEntry()); } else { getRegionMap().lruEntryUpdate(getRegionEntry()); } } }
public RegionMapCommitPut(FocusedRegionMap focusedRegionMap, InternalRegion owner, @Released EntryEventImpl callbackEvent, Operation putOp, boolean didDestroy, TransactionId txId, TXRmtEvent txEvent, List<EntryEventImpl> pendingCallbacks, TXEntryState txEntryState) { super(focusedRegionMap, owner, callbackEvent); this.putOp = putOp; this.didDestroy = didDestroy; this.txEvent = txEvent; this.pendingCallbacks = pendingCallbacks; this.txEntryState = txEntryState; this.remoteOrigin = !txId.getMemberId().equals(owner.getMyId()); this.invokeCallbacks = shouldInvokeCallbacks(); final boolean isTXHost = txEntryState != null; // If the transaction originated on another member and we do not host the transaction entry // and are not a replicate or partitioned (i.e. !isAllEvents) // then only apply the update to existing entries. // If the transaction originated on another member and we do not host the transaction entry // and we are a replicate or partitioned // then only apply the update to existing entries when the operation is an update and we // are initialized. // Otherwise use the standard create/update logic. this.onlyExisting = remoteOrigin && !isTXHost && (!owner.isAllEvents() || (!putOp.isCreate() && isOwnerInitialized())); }
/** * dispatch listener events for this event * * @param notifyGateways pass the event on to WAN queues */ public void invokeCallbacks(InternalRegion rgn, boolean skipListeners, boolean notifyGateways) { if (!callbacksInvoked()) { callbacksInvoked(true); if (this.op.isUpdate()) { rgn.invokePutCallbacks(EnumListenerEvent.AFTER_UPDATE, this, !skipListeners, notifyGateways); // gateways are notified in part2 processing } else if (this.op.isCreate()) { rgn.invokePutCallbacks(EnumListenerEvent.AFTER_CREATE, this, !skipListeners, notifyGateways); } else if (this.op.isDestroy()) { rgn.invokeDestroyCallbacks(EnumListenerEvent.AFTER_DESTROY, this, !skipListeners, notifyGateways); } else if (this.op.isInvalidate()) { rgn.invokeInvalidateCallbacks(EnumListenerEvent.AFTER_INVALIDATE, this, !skipListeners); } } }
/** * Update stats for a CQ for VSD * * @param cqEvent object containing info on the newly qualified CQ event */ public void updateStats(CqEvent cqEvent) { if (cqEvent.getQueryOperation() == null) return; this.incNumEvents(); if (cqEvent.getQueryOperation().isCreate()) { this.incNumInserts(); } if (cqEvent.getQueryOperation().isUpdate()) { this.incNumUpdates(); } if (cqEvent.getQueryOperation().isDestroy()) { this.incNumDeletes(); } }
private String getSqlString(TableMetaDataView tableMetaData, EntryColumnData entryColumnData, Operation operation) { SqlStatementFactory statementFactory = new SqlStatementFactory(tableMetaData.getIdentifierQuoteString()); String tableName = tableMetaData.getQuotedTablePath(); if (operation.isCreate()) { return statementFactory.createInsertSqlString(tableName, entryColumnData); } else if (operation.isUpdate()) { return statementFactory.createUpdateSqlString(tableName, entryColumnData); } else if (operation.isDestroy()) { return statementFactory.createDestroySqlString(tableName, entryColumnData); } else if (operation.isGet()) { return statementFactory.createSelectQueryString(tableName, entryColumnData); } else { throw new InternalGemFireException("unsupported operation " + operation); } }
public void firePendingCallbacks() { for (EntryEventImpl ee : getPendingCallbacks()) { if (ee.getOperation().isDestroy()) { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_DESTROY, ee, true); } else if (ee.getOperation().isInvalidate()) { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_INVALIDATE, ee, true); } else if (ee.getOperation().isCreate()) { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_CREATE, ee, true); } else { ee.getRegion().invokeTXCallbacks(EnumListenerEvent.AFTER_UPDATE, ee, true); } } }
/** * Check PUTALL_UPDATE Operation. */ @Test public void testPUTALL_UPDATE() { Operation op = Operation.PUTALL_UPDATE; assertFalse(op.isCreate()); assertTrue(op.isUpdate()); assertFalse(op.isInvalidate()); assertFalse(op.isDestroy()); assertTrue(op.isPutAll()); assertFalse(op.isRegionInvalidate()); assertFalse(op.isRegionDestroy()); assertFalse(op.isRegion()); assertFalse(op.isLocal()); assertTrue(op.isDistributed()); assertTrue(op.isEntry()); assertFalse(op.isExpiration()); assertFalse(op.isLocalLoad()); assertFalse(op.isNetLoad()); assertFalse(op.isLoad()); assertFalse(op.isNetSearch()); assertFalse(op.isClose()); assertFalse(op.isClear()); }
/** * Check LOCAL_LOAD_UPDATE Operation. */ @Test public void testLOCAL_LOAD_UPDATE() { Operation op = Operation.LOCAL_LOAD_UPDATE; assertFalse(op.isCreate()); assertTrue(op.isUpdate()); assertFalse(op.isInvalidate()); assertFalse(op.isDestroy()); assertFalse(op.isPutAll()); assertFalse(op.isRegionInvalidate()); assertFalse(op.isRegionDestroy()); assertFalse(op.isRegion()); assertFalse(op.isLocal()); assertTrue(op.isDistributed()); assertTrue(op.isEntry()); assertFalse(op.isExpiration()); assertTrue(op.isLocalLoad()); assertFalse(op.isNetLoad()); assertTrue(op.isLoad()); assertFalse(op.isNetSearch()); assertFalse(op.isClose()); assertFalse(op.isClear()); }
/** * Check REGION_REINITIALIZE Operation. */ @Test public void testREGION_REINITIALIZE() { Operation op = Operation.REGION_REINITIALIZE; assertFalse(op.isCreate()); assertFalse(op.isUpdate()); assertFalse(op.isInvalidate()); assertFalse(op.isDestroy()); assertFalse(op.isPutAll()); assertFalse(op.isRegionInvalidate()); assertTrue(op.isRegionDestroy()); assertTrue(op.isRegion()); assertTrue(op.isLocal()); assertFalse(op.isDistributed()); assertFalse(op.isEntry()); assertFalse(op.isExpiration()); assertFalse(op.isLocalLoad()); assertFalse(op.isNetLoad()); assertFalse(op.isLoad()); assertFalse(op.isNetSearch()); assertFalse(op.isClose()); assertFalse(op.isClear()); }