@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; } });
ByteBuffer bb = ByteBuffer.wrap(fieldValue.getColumn().getImmutableBytes()); long modelPathIdHashCode = bb.getLong(); PathAndDictionary pathAndDictionary = viewClassFieldBindings.get(modelPathIdHashCode); Id[] modelPathIds = modelPathIds(bb, modelPath.getPathMemberSize()); if (viewFieldsCollector.add(viewDescriptor, modelPath, modelPathIds, viewPathClasses, fieldValue.getValue(), fieldValue.getTimestamp())) { permissionCheckTheseIds.addAll(Arrays.asList(modelPathIds)); warn("Unable to look up model path " + modelPathIdHashCode + " classes for view path with path combination key: " + pathComboKey + " dropping value: " + fieldValue.getValue() + " on the floor.");
@Override public List<ReferenceWithTimestamp> populateLeafNodeFields(TenantIdAndCentricId tenantIdAndCentricId, WrittenEventContext writtenEventContext, PathContext pathContext, ObjectId objectInstanceId, Set<String> fieldNames, Map<String, ColumnValueAndTimestamp<String, OpaqueFieldValue, Long>> fieldValues) { LeafNodeFields fieldsToPopulate = writtenEventContext.getWrittenEventProvider().createLeafNodeFields(); List<ReferenceWithTimestamp> versions = new ArrayList<>(); String[] fieldNamesArray = fieldNames.toArray(new String[fieldNames.size()]); for (String fieldName : fieldNamesArray) { ColumnValueAndTimestamp<String, OpaqueFieldValue, Long> g = fieldValues.get(fieldName); if (g != null) { OpaqueFieldValue fieldValue = g.getValue(); long timestamp = g.getTimestamp(); pathContext.setLastTimestamp(timestamp); // ?? fieldsToPopulate.addField(fieldName, fieldValue); versions.add(new ReferenceWithTimestamp(objectInstanceId, fieldName, timestamp)); } } this.leafNodeFields = fieldsToPopulate; return versions; }
ColumnValueAndTimestamp<String, OpaqueFieldValue, Long> g = fieldValues.get(fieldName); if (g != null) { OpaqueFieldValue fieldValue = g.getValue(); long timestamp = g.getTimestamp(); latestTimestamp = Math.max(latestTimestamp, timestamp); if (fieldValue == null || fieldValue.isNull()) {
@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); } } } };