DSE driver configuration

The DSE driver uses the same configuration mechanism as the OSS driver.

It bundles its own dse-reference.conf file for configuration defaults, that inherits from the OSS driver’s reference.conf. This allows us not to repeat everything in the DSE configuration file, it only contains DSE-specific options.

For example, the OSS driver’s reference.conf defines a default request consistency level:

# reference.conf in com.datastax.oss::java-driver-core
datastax-java-driver {
  basic.request.consistency = LOCAL_ONE
}

The DSE driver’s dse-reference.conf does not override that option, so it inherits LOCAL_ONE. On the other hand, it defines its own defaults for DSE-specific features, for example the traversal source for graph statements:

# dse-reference.conf in com.datastax.dse::dse-java-driver-core
datastax-java-driver {
  basic.graph.traversal-source = g
}

So if you execute a graph statement with the DSE driver, you get a default consistency of LOCAL_ONE and the default traversal source g. If you put an application.conf in your application classpath, you can override either of those defaults:

# application.conf in your application
datastax-java-driver {
  basic {
    request.consistency = ONE
    graph.traversal-source = a
  }
}

Alternate application config locations

Like the OSS driver, the DSE driver includes other config loader implementations:

File file = new File("/path/to/application.conf");
DseSession session = DseSession.builder()
    .withConfigLoader(DseDriverConfigLoader.fromFile(file))
    .build();

Make sure you use the factory methods from DseDriverConfigLoader. If you use the methods from DriverConfigLoader (the OSS class), the resulting loader won’t read dse-reference.conf, and the driver might fail to initialize because some DSE-specific options are missing.

Advanced topics

If you are providing your own DriverConfigLoader implementation (for example to change the config prefix or load from a different source), here’s how you can inherit the driver’s built-in defaults:

DriverConfigLoader myConfigLoader =
    new DefaultDriverConfigLoader(
        () -> {
          // Load from your custom source / prefix
          Config myConfig = ...;

          // Load dse-reference.conf from the DSE driver artifact
          Config dseConfig =
              ConfigFactory.parseResourcesAnySyntax("dse-reference")
                  .getConfig("datastax-java-driver");

          // Load reference.conf from the OSS driver artifact
          Config ossConfig =
              ConfigFactory.parseResourcesAnySyntax("reference")
                  .getConfig("datastax-java-driver");

          return myConfig.withFallback(dseConfig).withFallback(ossConfig);
        });

DseSession session = DseSession.builder().withConfigLoader(myConfigLoader).build();