Skip to content

Commit 109023a

Browse files
feat: log version and settings on startup (#3601)
Add some informative log messages about the client on startup. A similar feature existed in 1x, but got lost in the upgrade 2.0. Will print the artifact name, version and settings for each new connection
1 parent 9a693e8 commit 109023a

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/BigtableHBaseSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,6 @@ protected String getRequiredValue(String key, String displayName) {
8787
!isNullOrEmpty(value), String.format("%s must be supplied via %s", displayName, key));
8888
return value;
8989
}
90+
91+
public abstract String toDebugString();
9092
}

bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/BigtableHBaseVeneerSettings.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
import com.google.cloud.bigtable.hbase.wrappers.BigtableHBaseSettings;
8686
import com.google.cloud.bigtable.hbase.wrappers.veneer.metrics.MetricsApiTracerAdapterFactory;
8787
import com.google.common.base.Joiner;
88+
import com.google.common.base.MoreObjects;
8889
import com.google.common.base.Optional;
8990
import com.google.common.base.Preconditions;
9091
import com.google.common.base.Strings;
@@ -257,6 +258,15 @@ public BigtableInstanceAdminSettings getInstanceAdminSettings() {
257258
return instanceAdminSettings;
258259
}
259260

261+
@Override
262+
public String toDebugString() {
263+
return MoreObjects.toStringHelper(this)
264+
.add("dataSettings", dataSettings)
265+
.add("tableAdminSettings", tableAdminSettings)
266+
.add("instanceAdminSettings", instanceAdminSettings)
267+
.toString();
268+
}
269+
260270
// ************** Private Helpers **************
261271
private BigtableDataSettings buildBigtableDataSettings(ClientOperationTimeouts clientTimeouts)
262272
throws IOException {

bigtable-client-core-parent/bigtable-hbase/src/main/java/org/apache/hadoop/hbase/client/AbstractBigtableConnection.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.google.api.core.InternalApi;
2020
import com.google.cloud.bigtable.hbase.BigtableBufferedMutator;
21+
import com.google.cloud.bigtable.hbase.BigtableHBaseVersion;
2122
import com.google.cloud.bigtable.hbase.BigtableRegionLocator;
2223
import com.google.cloud.bigtable.hbase.adapters.Adapters;
2324
import com.google.cloud.bigtable.hbase.adapters.HBaseRequestAdapter;
@@ -30,10 +31,12 @@
3031
import java.io.Closeable;
3132
import java.io.IOException;
3233
import java.util.HashSet;
34+
import java.util.Map;
3335
import java.util.Set;
3436
import java.util.concurrent.CopyOnWriteArraySet;
3537
import java.util.concurrent.ExecutorService;
3638
import java.util.concurrent.TimeUnit;
39+
import java.util.concurrent.atomic.AtomicBoolean;
3740
import org.apache.hadoop.conf.Configuration;
3841
import org.apache.hadoop.hbase.ServerName;
3942
import org.apache.hadoop.hbase.TableName;
@@ -114,11 +117,43 @@ protected AbstractBigtableConnection(
114117
throw ioe;
115118
}
116119

120+
logStartup(LOG, conf, settings);
121+
117122
this.batchPool = pool;
118123
this.closed = false;
119124
this.bigtableApi = BigtableApi.create(settings);
120125
}
121126

127+
private static final AtomicBoolean firstConnection = new AtomicBoolean();
128+
129+
private void logStartup(Logger logger, Configuration userConfig, BigtableHBaseSettings settings) {
130+
if (firstConnection.compareAndSet(false, true)) {
131+
String jarPath;
132+
try {
133+
jarPath = getClass().getProtectionDomain().getCodeSource().getLocation().toString();
134+
} catch (RuntimeException e) {
135+
jarPath = "<unknown>";
136+
}
137+
138+
logger.info(
139+
"Using bigtable-hbase client from jar %s. Version: %s",
140+
jarPath, BigtableHBaseVersion.getVersion());
141+
}
142+
// Dump user configuration
143+
if (logger.getLog().isDebugEnabled()) {
144+
MoreObjects.ToStringHelper configHelper = MoreObjects.toStringHelper("BigtableConfiguration");
145+
146+
for (Map.Entry<String, String> entry : userConfig) {
147+
if (!entry.getKey().startsWith("google.bigtable")) {
148+
continue;
149+
}
150+
configHelper.add(entry.getKey(), entry.getValue());
151+
}
152+
logger.debug("User Configuration: " + configHelper);
153+
logger.debug("Effective settings: " + settings.toDebugString());
154+
}
155+
}
156+
122157
/** {@inheritDoc} */
123158
@Override
124159
public Configuration getConfiguration() {

0 commit comments

Comments
 (0)