@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 void run() { try { if (requests.size() > 1) { LOG.debug("Request aggregation size: {}", requests.size()); } referenceStore.multiStreamRefs(requests); } catch (Exception ex) { LOG.warn("Failed to process request:" + requests, ex); for (RefStreamRequestContext request : requests) { request.failure(ex); } } } });
@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); } } } };
warn("Unable to look up model path " + modelPathIdHashCode + " classes for view path with path combination key: " + pathComboKey + " dropping value: " + fieldValue.getValue() + " on the floor."); LOG.warn("failed to load ViewValueBinding for viewValueBindingKey={}, fieldValue={} ", new Object[]{ modelPathIdHashCode, fieldValue });
LOG.warn("TODO Failed to process isn't implemented."); return failedToProcess;
private void readMaterializeView() throws Exception { VersionedTasmoViewModel model = tasmoViewModel.getVersionedTasmoViewModel(viewDescriptor.getTenantId()); InitiateReadTraversal initiateTraversal = model.getReadTraversers().get(viewDescriptor.getViewId().getClassName()); while (true) { try { CommitChange commitChange = new ConcurrencyAndExistenceCommitChange(concurrencyStore, this); initiateTraversal.read(referenceTraverser, fieldValueReader, new TenantIdAndCentricId(viewDescriptor.getTenantId(), viewDescriptor.getUserId()), viewDescriptor.getViewId(), commitChange); return; } catch (Exception x) { Throwable t = x; while (t != null) { if (t instanceof CommitChangeException) { break; } t = t.getCause(); } if (t instanceof CommitChangeException) { // TODO add retry count and retry timeout!! LOG.warn("Read reading viewDescriptor:" + viewDescriptor + " because it was modified while being read."); } else { throw x; } } } } }