@Override public ProjectCollection getUserTable(String project, boolean isEventFilterActive) { return new ProjectCollection(project, USER_TABLE); }
@Override public List<SchemaField> getCollection(String project, String collection) { try { return schemaCache.get(new ProjectCollection(project, collection)); } catch (ExecutionException e) { throw Throwables.propagate(e); } }
@Override public ProjectCollection getUserTable(String project, boolean isEventFilterActive) { if (isEventFilterActive) { return new ProjectCollection(prestoConfig.getUserConnector() + ".users", project); } return new ProjectCollection("users", project); } }
@Override public List<SchemaField> getCollection(String project, String collection) { try { return schemaCache.get(new ProjectCollection(project, collection)); } catch (ExecutionException e) { throw Throwables.propagate(e); } }
@Override public MaterializedView getMaterializedView(String project, String tableName) { try { return materializedViewCache.get(new ProjectCollection(project, tableName)); } catch (Exception e) { if (e.getCause() instanceof RuntimeException) { throw (RuntimeException) e.getCause(); } throw new RuntimeException(e.getCause()); } }
@Override public Map<String, List<SchemaField>> getSchemas(String project, Predicate<String> filter) { Map<String, List<SchemaField>> map = new HashMap<>(); collectionCache.getUnchecked(project).stream() .filter(table -> filter.test(table)) .forEach(table -> map.put(table, schemaCache.getUnchecked(new ProjectCollection(project, table)))); return map; }
@Override public synchronized boolean updateMaterializedView(String project, MaterializedView userView, CompletableFuture<Instant> releaseLock) { MaterializedView view = materializedViews.get(project).stream() .filter(e -> e.tableName.equals(userView.tableName)).findFirst().get(); if (!view.needsUpdate(Clock.systemUTC())) { return false; } ProjectCollection table = new ProjectCollection(project, userView.tableName); boolean notLocked = locks.add(table); if (notLocked) { releaseLock.whenComplete((success, ex) -> { if (success != null) { locks.remove(table); view.lastUpdate = success; } }); } return notLocked; }
schemaCache.put(new ProjectCollection(project, collection), currentFields); return currentFields; } catch (SQLException e) {
connection.commit(); connection.setAutoCommit(true); schemaCache.put(new ProjectCollection(project, collection), currentFields); } catch (SQLException e) {
public Map.Entry<List<SchemaField>, GenericData.Record> parseProperties(String project, String collection, JsonParser jp, boolean masterKey) throws IOException, NotExistsException { ProjectCollection key = new ProjectCollection(project, collection); Map.Entry<List<SchemaField>, Schema> schema = schemaCache.getIfPresent(key); boolean isNew = schema == null;
@Override public CompletableFuture<Void> storeAsync(Event event) { ProjectCollection tuple = new ProjectCollection(event.project(), event.collection()); CompletableFuture<Void> future = currentFutureSingle.computeIfAbsent(tuple, (k) -> new CompletableFuture<>()); queuedEvents.computeIfAbsent(tuple, (k) -> Collections.synchronizedList(new ArrayList<>())).add(event); return future; }