When I was using cassandra-driver
version 3.x everything worked fine. Now that I have upgraded I get the following message...
Error: ArgumentError: 'localDataCenter' is not defined in Client options and also was not specified in constructor. At least one is required.
My client declaration looks like this...
const client = new Client({
contactPoints: this.servers,
keyspace: "keyspace",
authProvider,
sslOptions,
pooling: {
coreConnectionsPerHost: {
[distance.local]: 1,
[distance.remote]: 1
}
},
// TODO: Needed because in spite of the documentation provided by DataStax the default value is not 0
socketOptions: {
readTimeout: 0
}
});
What should I use for the localDataCenter property?
To find your datacenter name, check in your node's cassandra-rackdc.properties
file:
$ cat cassandra-rackdc.properties
dc=HoldYourFire
rack=force10
Or, run a nodetool status
:
$ bin/nodetool status
Datacenter: HoldYourFire
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 172.0.0.1 575.64 KiB 16 ? 5c5cfc93-2e61-472e-b69b-a4fc40f94876 force10
UN 172.0.0.2 575.64 KiB 16 ? 4f040fef-5a6c-4be1-ba13-c9edbeaff6e1 force10
UN 172.0.0.3 575.64 KiB 16 ? 96626294-0ea1-4775-a08e-45661dc84cfa force10
If you have multiple data centers, you should pick the same one that your application is deployed in.
Since v4.0 localDataCenter is now a required Client option When using DCAwareRoundRobinPolicy, which is used by default, a local data center must now be provided to the Client options parameter as localDataCenter. This is necessary to prevent routing requests to nodes in remote data centers.
Refer upgrade guide here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With