Implementation:Datahub project Datahub DataHubClientConfigV2
| Knowledge Sources | |
|---|---|
| Domains | Java_SDK, Metadata_Emission, Client_Configuration |
| Last Updated | 2026-02-10 00:00 GMT |
Overview
The top-level immutable configuration class for the DataHub Java SDK V2, wrapping server connection settings, operation mode, emit mode, cache TTLs, and providing conversion to the underlying RestEmitterConfig.
Description
DataHubClientConfigV2 is a Lombok @Value/@Builder class that serves as the primary entry point for configuring a V2 DataHub client. It introduces V2-specific concepts on top of the base REST emitter configuration:
Operation Mode (OperationMode enum):
- SDK (default) -- User-initiated edits that write to editable aspects (e.g.,
editableDatasetProperties). Communicated to the server via theX-DataHub-Client-Modeheader. - INGESTION -- System/pipeline writes that write to system aspects (e.g.,
datasetProperties).
Key fields:
server-- DataHub GMS server URL (required).token-- Authentication token (optional).timeoutMs-- Request timeout in milliseconds (default: 10000).disableSslVerification-- SSL bypass for testing (default: false).maxRetries-- Retry count (default: 3).emitMode-- Controls persistence consistency tradeoff (default:SYNC_PRIMARY).configRefreshIntervalMs-- Server config cache TTL (default: 60000ms; 0 disables, -1 caches forever).aspectCacheTtlMs-- Aspect cache TTL (default: 60000ms).
Key methods:
toRestEmitterConfig()-- Converts the V2 config to aRestEmitterConfig, mapping emit mode to async flags and headers (includingX-DataHub-Client-ModeandX-DataHub-Sync-Index-UpdateforSYNC_WAITmode).fromEnv()-- Static factory that readsDATAHUB_SERVER(orDATAHUB_GMS_URL) andDATAHUB_TOKEN(orDATAHUB_GMS_TOKEN) environment variables. ThrowsIllegalArgumentExceptionif no server URL is found.
Usage
Use this class as the primary configuration for all V2 DataHub Java SDK clients. It abstracts away the details of REST emitter configuration and provides a clean, V2-specific API.
Code Reference
Source Location
metadata-integration/java/datahub-client/src/main/java/datahub/client/v2/config/DataHubClientConfigV2.java
Signature
@Value
@Builder
public class DataHubClientConfigV2 {
public enum OperationMode { SDK, INGESTION }
@Builder.Default @Nonnull OperationMode mode = OperationMode.SDK;
@Nonnull String server;
@Nullable String token;
@Builder.Default int timeoutMs = 10000;
@Builder.Default boolean disableSslVerification = false;
@Builder.Default int maxRetries = 3;
@Builder.Default @Nonnull EmitMode emitMode = EmitMode.SYNC_PRIMARY;
@Builder.Default long configRefreshIntervalMs = 60000;
@Builder.Default long aspectCacheTtlMs = 60000;
@Nonnull
public RestEmitterConfig toRestEmitterConfig()
@Nonnull
public static DataHubClientConfigV2 fromEnv()
}
Import
import datahub.client.v2.config.DataHubClientConfigV2;
import datahub.client.v2.config.DataHubClientConfigV2.OperationMode;
I/O Contract
Inputs
| Field | Type | Default | Description |
|---|---|---|---|
server |
String (@Nonnull) |
(required) | DataHub GMS server URL |
token |
String (@Nullable) |
null |
Authentication bearer token |
mode |
OperationMode |
SDK |
SDK (editable aspects) or INGESTION (system aspects) |
timeoutMs |
int |
10000 |
Request timeout in milliseconds |
disableSslVerification |
boolean |
false |
Whether to skip SSL verification |
maxRetries |
int |
3 |
Maximum number of retry attempts |
emitMode |
EmitMode |
SYNC_PRIMARY |
Persistence consistency mode |
configRefreshIntervalMs |
long |
60000 |
Server config cache TTL (ms); 0 disables, -1 caches forever |
aspectCacheTtlMs |
long |
60000 |
Aspect cache TTL (ms); 0 disables, -1 caches forever |
Environment variables for fromEnv():
| Variable | Fallback | Description |
|---|---|---|
DATAHUB_SERVER |
DATAHUB_GMS_URL |
Server URL (required) |
DATAHUB_TOKEN |
DATAHUB_GMS_TOKEN |
Authentication token (optional) |
Outputs
toRestEmitterConfig()returns a fully configuredRestEmitterConfigwith appropriate headers and async flags.fromEnv()returns aDataHubClientConfigV2built from environment variables.
Usage Examples
// Builder-based configuration
DataHubClientConfigV2 config = DataHubClientConfigV2.builder()
.server("http://localhost:8080")
.token("my-token")
.timeoutMs(30000)
.mode(OperationMode.SDK)
.emitMode(EmitMode.SYNC_WAIT)
.build();
// Convert to REST emitter config
RestEmitterConfig restConfig = config.toRestEmitterConfig();
// Environment-based configuration
DataHubClientConfigV2 envConfig = DataHubClientConfigV2.fromEnv();
// Ingestion mode for pipeline writes
DataHubClientConfigV2 ingestionConfig = DataHubClientConfigV2.builder()
.server("https://datahub.example.com")
.mode(OperationMode.INGESTION)
.emitMode(EmitMode.ASYNC)
.build();
Related Pages
- Datahub_project_Datahub_RestEmitterEmitMode -- Enum controlling persistence consistency
- Datahub_project_Datahub_RestEmitterConfig -- Underlying REST config produced by toRestEmitterConfig()
- Datahub_project_Datahub_ServerConfig -- Server configuration fetched at runtime
- Datahub_project_Datahub_RequiresMutable -- Annotation for entity mutation methods