private synchronized static ResourceLimiter initializeResourceLimiter(BigtableOptions options) { BigtableInstanceName instanceName = options.getInstanceName(); String key = instanceName.toString(); ResourceLimiter resourceLimiter = resourceLimiterMap.get(key); if (resourceLimiter == null) { int maxInflightRpcs = options.getBulkOptions().getMaxInflightRpcs(); long maxMemory = options.getBulkOptions().getMaxMemory(); ResourceLimiterStats stats = ResourceLimiterStats.getInstance(instanceName); resourceLimiter = new ResourceLimiter(stats, maxMemory, maxInflightRpcs); BulkOptions bulkOptions = options.getBulkOptions(); if (bulkOptions.isEnableBulkMutationThrottling()) { resourceLimiter.throttle(bulkOptions.getBulkMutationRpcTargetMs()); } resourceLimiterMap.put(key, resourceLimiter); } return resourceLimiter; }
BulkOptions.BIGTABLE_MAX_INFLIGHT_RPCS_PER_CHANNEL_DEFAULT * options.dataChannelCount; options.bulkOptions = BulkOptions.builder().setMaxInflightRpcs(maxInflightRpcs).build(); } else if (options.bulkOptions.getMaxInflightRpcs() <= 0) { int maxInflightRpcs = BulkOptions.BIGTABLE_MAX_INFLIGHT_RPCS_PER_CHANNEL_DEFAULT * options.dataChannelCount;
@Test public void testWriteWithBigTableOptionsSetsBulkOptionsAndRetryOptions() { final int maxInflightRpcs = 1; final int initialBackoffMillis = -1; BigtableOptions.Builder optionsBuilder = BIGTABLE_OPTIONS.toBuilder(); BulkOptions.Builder bulkOptionsBuilder = new BulkOptions.Builder(); bulkOptionsBuilder.setMaxInflightRpcs(maxInflightRpcs); RetryOptions.Builder retryOptionsBuilder = new RetryOptions.Builder(); retryOptionsBuilder.setInitialBackoffMillis(initialBackoffMillis); optionsBuilder .setBulkOptions(bulkOptionsBuilder.build()) .setRetryOptions(retryOptionsBuilder.build()); BigtableIO.Write write = BigtableIO.write().withBigtableOptions(optionsBuilder.build()); BigtableOptions options = write.getBigtableOptions(); assertEquals(true, options.getBulkOptions().useBulkApi()); assertEquals(maxInflightRpcs, options.getBulkOptions().getMaxInflightRpcs()); assertEquals(initialBackoffMillis, options.getRetryOptions().getInitialBackoffMillis()); assertThat( options.getBulkOptions(), Matchers.equalTo(bulkOptionsBuilder.setUseBulkApi(true).build())); assertThat(options.getRetryOptions(), Matchers.equalTo(retryOptionsBuilder.build())); }