@Override public void delete(final Context context, final Resource resource) { final Timer.Context ctx = m_deleteTimer.time(); final ConsistencyLevel writeConsistency = m_contextConfigurations.getWriteConsistency(context); final List<RegularStatement> statements = Lists.newArrayList(); definitelyUnindexResource(statements, context, resource, writeConsistency); definitelyUnindexResourceAttributes(statements, context, resource, writeConsistency); definitelyRemoveMetricName(statements, context, resource, writeConsistency); try { if (!statements.isEmpty()) { m_session.execute(batch(statements.toArray(new RegularStatement[statements.size()]))); } m_cache.delete(context, resource); } finally { ctx.stop(); } }
futures.add(m_session.executeAsync(statementToExecute));
@Inject public CassandraCachePrimer(CassandraSession session) { m_session = checkNotNull(session); Select select = QueryBuilder.select(Constants.Schema.C_METRICS_CONTEXT, Constants.Schema.C_METRICS_RESOURCE, Constants.Schema.C_METRICS_NAME) .from(Constants.Schema.T_METRICS); m_selectAllMetricsStatement = session.prepare(select.toString()); select = QueryBuilder.select(Constants.Schema.C_ATTRS_CONTEXT, Constants.Schema.C_ATTRS_RESOURCE, Constants.Schema.C_ATTRS_ATTR, Constants.Schema.C_ATTRS_VALUE) .from(Constants.Schema.T_ATTRS); m_selectAllAttributesStatement = session.prepare(select.toString()); }
futures.add(m_session.executeAsync(statementToExecute));
@Inject public CassandraCachePrimer(CassandraSession session) { m_session = checkNotNull(session); Select select = QueryBuilder.select(Constants.Schema.C_METRICS_CONTEXT, Constants.Schema.C_METRICS_RESOURCE, Constants.Schema.C_METRICS_NAME) .from(Constants.Schema.T_METRICS); m_selectAllMetricsStatement = session.prepare(select.toString()); select = QueryBuilder.select(Constants.Schema.C_ATTRS_CONTEXT, Constants.Schema.C_ATTRS_RESOURCE, Constants.Schema.C_ATTRS_ATTR, Constants.Schema.C_ATTRS_VALUE) .from(Constants.Schema.T_ATTRS); m_selectAllAttributesStatement = session.prepare(select.toString()); }
@Override public void delete(final Context context, final Resource resource) { final Timer.Context ctx = m_deleteTimer.time(); final ConsistencyLevel writeConsistency = m_contextConfigurations.getWriteConsistency(context); final List<RegularStatement> statements = Lists.newArrayList(); definitelyUnindexResource(statements, context, resource, writeConsistency); definitelyUnindexResourceAttributes(statements, context, resource, writeConsistency); definitelyRemoveMetricName(statements, context, resource, writeConsistency); try { if (!statements.isEmpty()) { m_session.execute(batch(statements.toArray(new RegularStatement[statements.size()]))); } m_cache.delete(context, resource); } finally { ctx.stop(); } }
private ResultSetFuture fetchResourceAttributes(Context context, String resourceId, ConsistencyLevel readConsistency) { BoundStatement bindStatement = m_selectAttributesStatement.bind(); bindStatement.setString(Schema.C_ATTRS_CONTEXT, context.getId()); bindStatement.setString(Schema.C_ATTRS_RESOURCE, resourceId); bindStatement.setConsistencyLevel(readConsistency); return m_session.executeAsync(bindStatement); }
@Inject public CassandraIndexer(CassandraSession session, @Named("search.cassandra.time-to-live") int ttl, ResourceMetadataCache cache, MetricRegistry registry, CassandraIndexingOptions options, ResourceIdSplitter resourceIdSplitter, ContextConfigurations contextConfigurations) { m_session = checkNotNull(session, "session argument"); m_ttl = ttl; m_cache = checkNotNull(cache, "cache argument"); checkNotNull(registry, "registry argument"); m_options = checkNotNull(options, "options argument"); m_resourceIdSplitter = checkNotNull(resourceIdSplitter, "resourceIdSplitter argument"); m_contextConfigurations = checkNotNull(contextConfigurations, "contextConfigurations argument"); m_updateTimer = registry.timer(name("search", "update")); m_deleteTimer = registry.timer(name("search", "delete")); m_inserts = registry.meter(name("search", "inserts")); m_insertTermsStatement = session.prepare(insertInto(Constants.Schema.T_TERMS) .value(Constants.Schema.C_TERMS_CONTEXT, bindMarker(Constants.Schema.C_TERMS_CONTEXT)) .value(Constants.Schema.C_TERMS_RESOURCE, bindMarker(Constants.Schema.C_TERMS_RESOURCE)) .value(Constants.Schema.C_TERMS_FIELD, bindMarker(Constants.Schema.C_TERMS_FIELD)) .value(Constants.Schema.C_TERMS_VALUE, bindMarker(Constants.Schema.C_TERMS_VALUE)) .using(ttl(ttl))); }
/** * Returns the set of resource ids that match the given * term query. */ private Set<String> searchForIds(Context context, TermQuery query, ConsistencyLevel readConsistency) { Set<String> ids = Sets.newTreeSet(); BoundStatement bindStatement = m_searchStatement.bind(); bindStatement.setString(Schema.C_TERMS_CONTEXT, context.getId()); bindStatement.setString(Schema.C_TERMS_FIELD, query.getTerm().getField(Constants.DEFAULT_TERM_FIELD)); bindStatement.setString(Schema.C_TERMS_VALUE, query.getTerm().getValue()); bindStatement.setConsistencyLevel(readConsistency); for (Row row : m_session.execute(bindStatement)) { ids.add(row.getString(Constants.Schema.C_TERMS_RESOURCE)); } return ids; }
private ResultSetFuture fetchMetricNames(Context context, String resourceId, ConsistencyLevel readConsistency) { BoundStatement bindStatement = m_selectMetricNamesStatement.bind(); bindStatement.setString(Schema.C_METRICS_CONTEXT, context.getId()); bindStatement.setString(Schema.C_METRICS_RESOURCE, resourceId); bindStatement.setConsistencyLevel(readConsistency); return m_session.executeAsync(bindStatement); }
@Inject public CassandraIndexer(CassandraSession session, @Named("search.cassandra.time-to-live") int ttl, ResourceMetadataCache cache, MetricRegistry registry, CassandraIndexingOptions options, ResourceIdSplitter resourceIdSplitter, ContextConfigurations contextConfigurations) { m_session = checkNotNull(session, "session argument"); m_ttl = ttl; m_cache = checkNotNull(cache, "cache argument"); checkNotNull(registry, "registry argument"); m_options = checkNotNull(options, "options argument"); m_resourceIdSplitter = checkNotNull(resourceIdSplitter, "resourceIdSplitter argument"); m_contextConfigurations = checkNotNull(contextConfigurations, "contextConfigurations argument"); m_updateTimer = registry.timer(name("search", "update")); m_deleteTimer = registry.timer(name("search", "delete")); m_inserts = registry.meter(name("search", "inserts")); m_insertTermsStatement = session.prepare(insertInto(Constants.Schema.T_TERMS) .value(Constants.Schema.C_TERMS_CONTEXT, bindMarker(Constants.Schema.C_TERMS_CONTEXT)) .value(Constants.Schema.C_TERMS_RESOURCE, bindMarker(Constants.Schema.C_TERMS_RESOURCE)) .value(Constants.Schema.C_TERMS_FIELD, bindMarker(Constants.Schema.C_TERMS_FIELD)) .value(Constants.Schema.C_TERMS_VALUE, bindMarker(Constants.Schema.C_TERMS_VALUE)) .using(ttl(ttl))); }
/** * Returns the set of resource ids that match the given * term query. */ private Set<String> searchForIds(Context context, TermQuery query, ConsistencyLevel readConsistency) { Set<String> ids = Sets.newTreeSet(); BoundStatement bindStatement = m_searchStatement.bind(); bindStatement.setString(Schema.C_TERMS_CONTEXT, context.getId()); bindStatement.setString(Schema.C_TERMS_FIELD, query.getTerm().getField(Constants.DEFAULT_TERM_FIELD)); bindStatement.setString(Schema.C_TERMS_VALUE, query.getTerm().getValue()); bindStatement.setConsistencyLevel(readConsistency); for (Row row : m_session.execute(bindStatement)) { ids.add(row.getString(Constants.Schema.C_TERMS_RESOURCE)); } return ids; }
private ResultSetFuture fetchMetricNames(Context context, String resourceId, ConsistencyLevel readConsistency) { BoundStatement bindStatement = m_selectMetricNamesStatement.bind(); bindStatement.setString(Schema.C_METRICS_CONTEXT, context.getId()); bindStatement.setString(Schema.C_METRICS_RESOURCE, resourceId); bindStatement.setConsistencyLevel(readConsistency); return m_session.executeAsync(bindStatement); }
@Inject public CassandraSearcher(CassandraSession session, MetricRegistry registry, ContextConfigurations contextConfigurations) { m_session = checkNotNull(session, "session argument"); m_searchTimer = registry.timer(name("search", "search")); m_contextConfigurations = checkNotNull(contextConfigurations, "contextConfigurations argument"); Select select = QueryBuilder.select(Schema.C_TERMS_RESOURCE).from(Schema.T_TERMS); select.where(eq(Schema.C_TERMS_CONTEXT, bindMarker(Schema.C_TERMS_CONTEXT))) .and( eq(Schema.C_TERMS_FIELD, bindMarker(Schema.C_TERMS_FIELD))) .and( eq(Schema.C_TERMS_VALUE, bindMarker(Schema.C_TERMS_VALUE))); m_searchStatement = m_session.prepare(select.toString()); select = QueryBuilder.select(Schema.C_ATTRS_ATTR, Schema.C_ATTRS_VALUE).from(Schema.T_ATTRS); select.where(eq(Schema.C_ATTRS_CONTEXT, bindMarker(Schema.C_ATTRS_CONTEXT))) .and( eq(Schema.C_ATTRS_RESOURCE, bindMarker(Schema.C_ATTRS_RESOURCE))); m_selectAttributesStatement = m_session.prepare(select.toString()); select = QueryBuilder.select(Schema.C_METRICS_NAME).from(Schema.T_METRICS); select.where(eq(Schema.C_METRICS_CONTEXT, bindMarker(Schema.C_METRICS_CONTEXT))) .and( eq(Schema.C_METRICS_RESOURCE, bindMarker(Schema.C_METRICS_RESOURCE))); m_selectMetricNamesStatement = m_session.prepare(select.toString()); }
m_session.execute(batch);
private ResultSetFuture fetchResourceAttributes(Context context, String resourceId, ConsistencyLevel readConsistency) { BoundStatement bindStatement = m_selectAttributesStatement.bind(); bindStatement.setString(Schema.C_ATTRS_CONTEXT, context.getId()); bindStatement.setString(Schema.C_ATTRS_RESOURCE, resourceId); bindStatement.setConsistencyLevel(readConsistency); return m_session.executeAsync(bindStatement); }
@Inject public CassandraSampleRepository(CassandraSession session, @Named("samples.cassandra.time-to-live") int ttl, MetricRegistry registry, SampleProcessorService processorService, ContextConfigurations contextConfigurations) { m_session = checkNotNull(session, "session argument"); checkArgument(ttl >= 0, "Negative Cassandra column TTL"); m_ttl = ttl; checkNotNull(registry, "metric registry argument"); m_processorService = processorService; m_contextConfigurations = checkNotNull(contextConfigurations, "contextConfigurations argument"); Select select = QueryBuilder.select().from(SchemaConstants.T_SAMPLES); select.where(eq(SchemaConstants.F_CONTEXT, bindMarker(SchemaConstants.F_CONTEXT))); select.where(eq(SchemaConstants.F_PARTITION, bindMarker(SchemaConstants.F_PARTITION))); select.where(eq(SchemaConstants.F_RESOURCE, bindMarker(SchemaConstants.F_RESOURCE))); select.where(gte(SchemaConstants.F_COLLECTED, bindMarker("start"))); select.where(lte(SchemaConstants.F_COLLECTED, bindMarker("end"))); m_selectStatement = m_session.prepare(select.toString()); Delete delete = QueryBuilder.delete().from(SchemaConstants.T_SAMPLES); delete.where(eq(SchemaConstants.F_CONTEXT, bindMarker(SchemaConstants.F_CONTEXT))); delete.where(eq(SchemaConstants.F_PARTITION, bindMarker(SchemaConstants.F_PARTITION))); delete.where(eq(SchemaConstants.F_RESOURCE, bindMarker(SchemaConstants.F_RESOURCE))); m_deleteStatement = m_session.prepare(delete.toString()); m_sampleSelectTimer = registry.timer(metricName("sample-select-timer")); m_measurementSelectTimer = registry.timer(metricName("measurement-select-timer")); m_insertTimer = registry.timer(metricName("insert-timer")); m_samplesInserted = registry.meter(metricName("samples-inserted")); m_samplesSelected = registry.meter(metricName("samples-selected")); }
bindStatement.setString(SchemaConstants.F_RESOURCE, resource.getId()); futures.add(m_session.executeAsync(bindStatement)); bindStatement.setString(SchemaConstants.F_RESOURCE, resource.getId()); futures.add(m_session.executeAsync(bindStatement));
@Inject public CassandraSearcher(CassandraSession session, MetricRegistry registry, ContextConfigurations contextConfigurations) { m_session = checkNotNull(session, "session argument"); m_searchTimer = registry.timer(name("search", "search")); m_contextConfigurations = checkNotNull(contextConfigurations, "contextConfigurations argument"); Select select = QueryBuilder.select(Schema.C_TERMS_RESOURCE).from(Schema.T_TERMS); select.where(eq(Schema.C_TERMS_CONTEXT, bindMarker(Schema.C_TERMS_CONTEXT))) .and( eq(Schema.C_TERMS_FIELD, bindMarker(Schema.C_TERMS_FIELD))) .and( eq(Schema.C_TERMS_VALUE, bindMarker(Schema.C_TERMS_VALUE))); m_searchStatement = m_session.prepare(select.toString()); select = QueryBuilder.select(Schema.C_ATTRS_ATTR, Schema.C_ATTRS_VALUE).from(Schema.T_ATTRS); select.where(eq(Schema.C_ATTRS_CONTEXT, bindMarker(Schema.C_ATTRS_CONTEXT))) .and( eq(Schema.C_ATTRS_RESOURCE, bindMarker(Schema.C_ATTRS_RESOURCE))); m_selectAttributesStatement = m_session.prepare(select.toString()); select = QueryBuilder.select(Schema.C_METRICS_NAME).from(Schema.T_METRICS); select.where(eq(Schema.C_METRICS_CONTEXT, bindMarker(Schema.C_METRICS_CONTEXT))) .and( eq(Schema.C_METRICS_RESOURCE, bindMarker(Schema.C_METRICS_RESOURCE))); m_selectMetricNamesStatement = m_session.prepare(select.toString()); }