public ReplicatedIndexLocationStrategy(IndexLocationStrategy indexLocationStrategy){ rootName = indexLocationStrategy.getIndexRootName(); indexInitialName = indexLocationStrategy.getIndexInitialName(); applicationScope = indexLocationStrategy.getApplicationScope(); numberShards = indexLocationStrategy.getNumberOfShards(); numberReplicas = indexLocationStrategy.getNumberOfReplicas(); alias = new ReplicatedIndexAlias( indexLocationStrategy.getAlias() ); }
public EsEntityIndexBatchImpl( final IndexLocationStrategy locationStrategy, final EntityIndex entityIndex ) { this.indexLocationStrategy = locationStrategy; this.entityIndex = entityIndex; this.applicationScope = indexLocationStrategy.getApplicationScope(); this.alias = indexLocationStrategy.getAlias(); //constrained this.container = new IndexOperationMessage(); }
@Override public void initialize() { final int numberOfShards = indexLocationStrategy.getNumberOfShards(); final int numberOfReplicas = indexLocationStrategy.getNumberOfReplicas(); aliasCache.invalidate(alias); if (shouldInitialize()) { addIndex( indexLocationStrategy.getIndexInitialName(), numberOfShards, numberOfReplicas, indexFig.getWriteConsistencyLevel() ); } }
private long getIndexSize(){ long indexSize = 0L; final String indexName = indexLocationStrategy.getIndexInitialName(); try { final IndicesStatsResponse statsResponse = esProvider.getClient() .admin() .indices() .prepareStats(indexName) .all() .execute() .actionGet(); final CommonStats indexStats = statsResponse.getIndex(indexName).getTotal(); indexSize = indexStats.getStore().getSizeInBytes(); } catch (IndexMissingException e) { // if for some reason the index size does not exist, // log an error and we can assume size is 0 as it doesn't exist logger.error("Unable to get size for index {} due to IndexMissingException for app {}", indexName, indexLocationStrategy.getApplicationScope().getApplication().getUuid()); } return indexSize; }
@Test public void managementNaming(){ IndexLocationStrategy indexLocationStrategy = indexLocationStrategyFactory.getIndexLocationStrategy(managementApplicationScope); //check that factory works assertEquals(indexLocationStrategy.getIndexRootName(),managementLocationStrategy.getIndexRootName()); //check that root name is as expected assertEquals(indexLocationStrategy.getIndexRootName(),clusterName + "_" + keyspaceName + "_" + indexProcessorFig.getManagementAppIndexName()); //check bucket name is as expected assertEquals(indexLocationStrategy.getIndexRootName(), indexLocationStrategy.getIndexInitialName()); assertEquals(indexLocationStrategy.getIndexInitialName(),clusterName + "_" + keyspaceName + "_" +indexProcessorFig.getManagementAppIndexName()); }
public EntityIndexBatch deindexWithDocId( final String docId ) { String[] indexes = entityIndex.getIndexes(); //get the default index if no alias exists yet if ( indexes == null || indexes.length == 0 ) { throw new IllegalStateException("No indexes exist for " + indexLocationStrategy.getAlias().getWriteAlias()); } if ( logger.isDebugEnabled() ) { logger.debug( "Deindexing to indexes {} with with documentId {} ", indexes, docId ); } container.addDeIndexRequest( new DeIndexOperation( indexes, docId ) ); return this; }
@Test public void applicationRootNaming(){ IndexLocationStrategy indexLocationStrategy = indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope); assertEquals( indexLocationStrategy.getIndexRootName(), applicationLocationStrategy.getIndexRootName() ); assertEquals( indexLocationStrategy.getIndexRootName(), clusterName ); }
new ApplicationIndexBucketLocator(indexProcessorFig) ); names.add(indexLocationStrategyBucket.getIndexInitialName()); new ApplicationScopeImpl(CpNamingUtils.generateApplicationId(UUID.randomUUID())), new ApplicationIndexBucketLocator(indexProcessorFig)); String name = indexLocationStrategyBucket.getIndexInitialName(); assertTrue("failed to match correct name",regex.matcher(name).matches()); names.add(name);
@Inject public EsEntityIndexImpl( final EsProvider provider, final IndexCache indexCache, final IndexFig indexFig, final MetricsFactory metricsFactory, final IndexLocationStrategy indexLocationStrategy ) { this.indexFig = indexFig; this.indexLocationStrategy = indexLocationStrategy; this.failureMonitor = new FailureMonitorImpl( indexFig, provider ); this.esProvider = provider; this.alias = indexLocationStrategy.getAlias(); this.aliasCache = indexCache; this.applicationScope = indexLocationStrategy.getApplicationScope(); this.cursorTimeout = indexFig.getQueryCursorTimeout(); this.queryTimeout = indexFig.getWriteTimeout(); this.searchRequest = new SearchRequestBuilderStrategy(esProvider, applicationScope, alias, cursorTimeout ); this.searchRequestBuilderStrategyV2 = new SearchRequestBuilderStrategyV2( esProvider, applicationScope, alias, cursorTimeout ); this.addTimer = metricsFactory.getTimer(EsEntityIndexImpl.class, "index.add"); this.updateAliasTimer = metricsFactory.getTimer(EsEntityIndexImpl.class, "index.update_alias"); this.mappingTimer = metricsFactory.getTimer(EsEntityIndexImpl.class, "index.create_mapping"); this.refreshIndexMeter = metricsFactory.getMeter(EsEntityIndexImpl.class, "index.refresh_index"); this.searchTimer = metricsFactory.getTimer(EsEntityIndexImpl.class, "search"); this.aggregationTimer = metricsFactory.getTimer( EsEntityIndexImpl.class, "aggregations" ); this.refreshTimer = metricsFactory.getTimer( EsEntityIndexImpl.class, "index.refresh" ); }
@Override public EntityIndexBatch deindex( final SearchEdge searchEdge, final Id id, final UUID version ) { IndexValidationUtils.validateSearchEdge(searchEdge); ValidationUtils.verifyIdentity(id); ValidationUtils.verifyVersion( version ); String[] indexes = entityIndex.getIndexes(); //get the default index if no alias exists yet if ( indexes == null || indexes.length == 0 ) { throw new IllegalStateException("No indexes exist for " + indexLocationStrategy.getAlias().getWriteAlias()); } if ( logger.isDebugEnabled() ) { logger.debug( "Deindexing to indexes {} with scope {} on edge {} with id {} and version {} ", indexes, applicationScope, searchEdge, id, version ); } container.addDeIndexRequest(new DeIndexOperation(indexes, applicationScope, searchEdge, id, version)); return this; }
final Object totalIndexSizeFromCache = sizeCache.getIfPresent(indexLocationStrategy.getIndexRootName()); long totalIndexSizeInBytes; if (totalIndexSizeFromCache == null){ totalIndexSizeInBytes = getIndexSize(); sizeCache.put(indexLocationStrategy.getIndexRootName(), totalIndexSizeInBytes); }else{ totalIndexSizeInBytes = (long) totalIndexSizeFromCache;
@Test public void testReplication(){ IndexLocationStrategy indexLocationStrategy = indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope); ReplicatedIndexLocationStrategy replicatedIndexLocationStrategy = new ReplicatedIndexLocationStrategy(indexLocationStrategy); assertEquals(replicatedIndexLocationStrategy.getApplicationScope(),indexLocationStrategy.getApplicationScope()); assertEquals(replicatedIndexLocationStrategy.getIndexInitialName(),indexLocationStrategy.getIndexInitialName()); assertEquals(replicatedIndexLocationStrategy.getIndexRootName(),indexLocationStrategy.getIndexRootName()); assertEquals(replicatedIndexLocationStrategy.getNumberOfReplicas(), indexLocationStrategy.getNumberOfReplicas()); assertEquals(replicatedIndexLocationStrategy.getNumberOfShards(),indexLocationStrategy.getNumberOfShards()); assertEquals(replicatedIndexLocationStrategy.getAlias().getReadAlias(),indexLocationStrategy.getAlias().getReadAlias()); assertEquals(replicatedIndexLocationStrategy.getAlias().getWriteAlias(),indexLocationStrategy.getAlias().getWriteAlias()); }
@Test public void applicationAliasName(){ IndexLocationStrategy indexLocationStrategy = indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope); String applicationId = applicationScope.getApplication().getUuid().toString().toLowerCase(); assertEquals( indexLocationStrategy.getAlias().getReadAlias(), clusterName +"_"+ applicationId + "_read_" + indexFig.getAliasPostfix() ); assertEquals( indexLocationStrategy.getAlias().getWriteAlias(), clusterName +"_"+ applicationId + "_write_" + indexFig.getAliasPostfix() ); }
@Test public void managementAliasName(){ IndexLocationStrategy indexLocationStrategy = indexLocationStrategyFactory.getIndexLocationStrategy(managementApplicationScope); String managementAppIndexName = indexProcessorFig.getManagementAppIndexName(); assertEquals( indexLocationStrategy.getAlias().getReadAlias(), clusterName + "_" + keyspaceName + "_" + managementAppIndexName + "_read_" + indexFig.getAliasPostfix() ); assertEquals( indexLocationStrategy.getAlias().getWriteAlias(), clusterName + "_" + keyspaceName + "_" + managementAppIndexName + "_write_" + indexFig.getAliasPostfix() ); }