@Override public void uncaughtException(Thread t, Throwable e) { LOG.error("Thread " + t.getName() + " threw uncaught exception", e); } })
@Override public void uncaughtException(Thread t, Throwable e) { LOG.error("Thread " + t.getName() + " threw uncaught exception", e); } })
@Override public void run() { try { tenantViewsProvider.reloadModels(); } catch (Exception x) { LOG.error("Scheduled reloading of view model failed. ", x); } } }, config.getPollForModelChangesEveryNSeconds(), config.getPollForModelChangesEveryNSeconds(), TimeUnit.SECONDS);
@Override public void run() { try { processingStats.logStats(); } catch (Exception x) { LOG.error("Issue with logging stats. ", x); } } }, 60, 60, TimeUnit.SECONDS);
public Map<Long, PathAndDictionary> getViewFieldBinding(TenantId tenantId, String className) { if (!versionedViewModel.containsKey(tenantId)) { loadModel(tenantId); } VersionedViewsModel versionedViewsModel = versionedViewModel.get(tenantId); if (versionedViewsModel == null || versionedViewsModel.getViewsModel().isEmpty()) { if (!tenantId.equals(masterTenantId)) { versionedViewsModel = versionedViewModel.get(masterTenantId); } } if (versionedViewsModel == null) { LOG.error("Need to load the view model by calling loadModel()."); return null; } return versionedViewsModel.getViewsModel().get(className); } }
List<ViewCollectorImpl<V>> buildViewCollectors(List<ViewDescriptor> request, Map<TenantAndActor, Set<Id>> permisionCheckTheseIds) { List<ViewCollectorImpl<V>> viewCollectors = Lists.newArrayList(); for (ViewDescriptor viewDescriptor : request) { TenantAndActor tenantAndActor = new TenantAndActor(viewDescriptor.getTenantId(), viewDescriptor.getActorId()); Set<Id> accumulateIdsToBePermissionsChecked = permisionCheckTheseIds.get(tenantAndActor); if (accumulateIdsToBePermissionsChecked == null) { accumulateIdsToBePermissionsChecked = new HashSet<>(); permisionCheckTheseIds.put(tenantAndActor, accumulateIdsToBePermissionsChecked); } Map<Long, PathAndDictionary> viewFieldBindings = tenantViewsProvider.getViewFieldBinding( viewDescriptor.getTenantIdAndCentricId().getTenantId(), viewDescriptor.getViewId().getClassName()); // TODO: be able to pass back error result per descriptor to front end if (viewFieldBindings == null) { LOG.error(viewDescriptor.getViewId().getClassName() + " has no declared view bindings."); } ViewFieldsCollector viewFieldsCollector = new ViewFieldsCollector(merger, viewMaxSizeInBytes); viewCollectors.add(new ViewCollectorImpl<>(viewDescriptor, viewFieldBindings, viewFieldsCollector, staleViewFieldStream, accumulateIdsToBePermissionsChecked, viewFormatter)); } return viewCollectors; }
public void loadModel(TenantId tenantId) { ChainedVersion currentVersion = eventsProvider.getCurrentEventsVersion(tenantId); if (currentVersion == ChainedVersion.NULL) { versionedEventsModels.put(tenantId, new VersionedEventsModel(currentVersion, null)); } else { VersionedEventsModel currentVersionedEventModel = versionedEventsModels.get(tenantId); if (currentVersionedEventModel == null || !currentVersionedEventModel.getVersion().equals(currentVersion)) { final MutableInt errors = new MutableInt(); final EventsModel newEventsModel = new EventsModel(); List<ObjectNode> events = eventsProvider.getEvents(new EventsProcessorId(tenantId, "NotBeingUsedYet")); for (ObjectNode event : events) { try { newEventsModel.addEvent(event); } catch (Exception x) { LOG.error("Failed to load event for " + event, x); throw new RuntimeException("Failed to load (" + errors.longValue() + ") event/s. "); } } versionedEventsModels.put(tenantId, new VersionedEventsModel(currentVersion, newEventsModel)); } else { LOG.debug("Didn't reload because event model versions are equal."); } } }
return views; } catch (Exception ex) { LOG.error("Failed while loading {}", request); throw new IOException("Failed to load for the following reason.", ex); } finally {
staleViewFieldStream.stream(viewDescriptor, fieldValue); } catch (Exception x) { LOG.error("Implementer of staleViewFieldStream is failing to handle all exception appropriately. ", x);
final VersionedTasmoViewModel model = tasmoViewModel.getVersionedTasmoViewModel(tenantId); if (model == null) { LOG.error("Cannot process an event until a model has been loaded."); throw new Exception("Cannot process an event until a model has been loaded.");
public boolean add(ViewDescriptor viewDescriptor, ModelPath modelPath, Id[] modelPathIds, String[] viewPathClasses, ViewValue viewValue, Long timestamp) throws IOException { byte[] value = (viewValue == null) ? null : viewValue.getValue(); viewSizeInBytes += (value == null) ? 0 : value.length; if (viewSizeInBytes > viewMaxSizeInBytes) { LOG.error("ViewDescriptor:" + viewDescriptor + " is larger than viewMaxReadableBytes:" + viewMaxSizeInBytes); return false; } if (viewValue == null || viewValue.getValue() == null || viewValue.getValue().length == 0) { return false; } ObjectNode valueObject = merger.toObjectNode(viewValue.getValue()); if (valueObject == null || valueObject.isNull() || valueObject.size() == 0) { return false; } ObjectId[] modelPathInstanceIds = modelPathInstanceIds(modelPathIds, viewPathClasses, modelPath.getPathMembers()); LOG.debug("Read view path -> with id={} instance ids={} value={} timestamp={}", new Object[]{modelPath.getId(), modelPathIds, viewValue, timestamp}); if (treeRoot == null) { treeRoot = new MapTreeNode(modelPathInstanceIds[0]); } treeRoot.add(modelPath.getPathMembers().toArray(new ModelPathStep[modelPath.getPathMemberSize()]), modelPathInstanceIds, viewValue, timestamp); return true; }