public List<Future<?>> index( final MiruContext<BM, IBM, ?> context, MiruTenantId tenantId, final Future<List<BloomWork>> bloomWorksFuture, boolean repair, ExecutorService indexExecutor) throws ExecutionException, InterruptedException { StackBuffer stackBuffer = new StackBuffer(); List<BloomWork> bloomWorks = bloomWorksFuture.get(); final MiruFieldIndex<BM, IBM> bloomFieldIndex = context.getFieldIndexProvider().getFieldIndex(MiruFieldType.bloom); int callableCount = 0; List<Future<?>> futures = Lists.newArrayList(); for (final BloomWork bloomWork : bloomWorks) { futures.add( indexExecutor.submit( () -> { log.inc("count", bloomWork.bloomFieldValues.size()); log.inc("count", bloomWork.bloomFieldValues.size(), tenantId.toString()); MiruFieldDefinition bloomFieldDefinition = context.schema.getFieldDefinition(bloomWork.bloomFieldId); MiruTermId compositeBloomId = indexUtil.makeBloomTerm(bloomWork.fieldValue, bloomFieldDefinition.name); MiruInvertedIndex<BM, IBM> invertedIndex = bloomFieldIndex.getOrCreateInvertedIndex( "indexBloom", bloomWork.fieldId, compositeBloomId); bloomIndex.put(invertedIndex, bloomWork.bloomFieldValues, stackBuffer); return null; })); callableCount++; } log.trace("Submitted {} bloom callables", callableCount); return futures; }