@Override public ColumnValueAndTimestamp<ImmutableByteArray, ViewValue, Long> callback(ColumnValueAndTimestamp<ImmutableByteArray, ViewValue, Long> v) throws Exception { if (v != null && v.getTimestamp() < timestamp) { removes.add(new RowColumnTimestampRemove<>(rowKey, v.getColumn(), constantTimestamper)); } return v; } });
@Override public ColumnValueAndTimestamp<ObjectId, byte[], Long> callback(ColumnValueAndTimestamp<ObjectId, byte[], Long> v) throws Exception { if (v == null) { if (!batch.isEmpty()) { refStreamQueue.put(batch); } refStreamQueue.put(NULL); } else { ReferenceWithTimestamp referenceWithTimestamp = new ReferenceWithTimestamp(v.getColumn(), referringFieldName, v.getTimestamp()); batch.add(referenceWithTimestamp); if (batch.size() > MAX_FAN_OUT_BEFORE_WARN) { LOG.warn("TODO: streamBackRefs reference fan-out is exceeding comfort level. We need to break scans into batched scans."); } } return v; }
@Override public ColumnValueAndTimestamp<ObjectId, byte[], Long> callback(ColumnValueAndTimestamp<ObjectId, byte[], Long> backRef) throws Exception { if (backRef != null) { ReferenceWithTimestamp reference = new ReferenceWithTimestamp(backRef.getColumn(), fieldName, backRef.getTimestamp()); if (LOG.isTraceEnabled()) { LOG.trace(System.currentTimeMillis() + " |--> {} Got aIds Tenant={} b={} a={} Timestamp={}", new Object[]{ threadTimestamp, tenantIdAndCentricId, aClassAndField_bId, backRef.getColumn(), backRef.getTimestamp()}); } refs.add(reference); if (refs.size() > MAX_FAN_OUT_BEFORE_WARN) { LOG.warn("TODO: streamBackRefs reference fan-out is exceeding comfort level. We need break scans into batched scans."); } } return backRef; } }));
@Override public void stream(ViewDescriptor viewDescriptor, ColumnValueAndTimestamp<ImmutableByteArray, ViewValue, Long> value) { if (value != null && value.getTimestamp() < System.currentTimeMillis() - removeUndeclaredFieldsAfterNMillis) { try { ImmutableByteArray rowKey = viewValueStore.rowKey(viewDescriptor.getViewId()); viewValueStore.remove(viewDescriptor.getTenantIdAndCentricId(), rowKey, value.getColumn(), value.getTimestamp() + 1); } catch (IOException x) { LOG.warn("Failed trying to cleanup stale fields for:{} ", viewDescriptor); } } } };
ByteBuffer bb = ByteBuffer.wrap(fieldValue.getColumn().getImmutableBytes()); long modelPathIdHashCode = bb.getLong(); PathAndDictionary pathAndDictionary = viewClassFieldBindings.get(modelPathIdHashCode);