Forum: Managing VoltDB

Post: Client connection failed

Client connection failed
Jan 16, 2014

I have a cluster consisting of three nodes running voltdb-ent-4.0.1 enterprise edition.
Currently I am taking the steps to test snapshot functionality and analyse its impact on multiple nodes running on the same hardware.
I would like to test it with a single cluster first but here's where problem occurs.

When I am trying to pause the db I am getting the following error:

[voltdb1@dubdcr01 VoltDB]$ voltadmin pause
   ERROR: Client connection failed.
   ERROR: error Exception: [Errno 111] Connection refused

   FATAL: Exiting.
[voltdb1@dubdcr01 VoltDB]$

The deployment file looks as follows:

<?xml version="1.0"?>
   <cluster hostcount="3"
   <httpd enabled="false">
      <jsonapi enabled="false" />
   <export enabled="false" target="file">
                <property name="type">csv</property>
                <property name="nonce">bm_export</property>
                <property name="period">1</property>
                <property name="skipinternals">false</property>
                <property name="outdir">/local/voltdb1/volt/exports</property>
   <commandlog enabled="true" logsize="8192" synchronous="false">
        <frequency time="100"/>
        <commandlog path="/local/voltdb1/volt/commandlogs" />
        <commandlogsnapshot path="/local/voltdb1/volt/snapshots" />
   <security enabled="false" />
    <snapshot priority="10"/>
   <partition-detection enabled="false">

The attempt to do a snapshot from enterprise-manager fails as well.

Probably it is also worth to mention I didn't experience that issue with a single node configuration.


Jan 16, 2014

If you get connection refused it is because Volt wasn't listening on the interface and port you specified in the client. How are you starting Volt? Interfaces are specified on the command line and not in the deployment file because they differ from node to node (command line is for node specific config).

It could also be that you paused the database or started it in admin mode in which case connections would not be accepted on the client port (although the admin port would work).

Jan 16, 2014
Hi Ariel,

Thanks for your response. Below is how I start Volt on each node correspondingly

[voltdb1@dubdcr01 VoltDB]$ voltdb create ./bm_spike.jar -d deployment.xml -H --client 21212 -l license.xml --externalinterface --internalinterface > volt-console.log
[voltdb1@dubdcr02 VoltDB]$ voltdb create ./bm_spike.jar -d deployment.xml -H --client 21212 -l license.xml --externalinterface --internalinterface > volt-console.log
[voltdb1@dubdcr03 VoltDB]$ voltdb create ./bm_spike.jar -d deployment.xml -H --client 21212 -l license.xml --externalinterface --internalinterface > volt-console.log


Jan 16, 2014

One thing to check is the volt-console log file, to see if the server initialized message has been printed. The servers won't start accepting connections until they are ready to execute transactions.

How are you specifying the address to connect to in your client application? Is it by IP or hostname? Do you know if the hostname resolves to the correct IP for the interface being used as the external interface?

If you do "sqlcmd --servers=" does it also refuse the connection?

Jan 16, 2014

Yes, the 'Server completed initialization.' message is printed int the volt-console.log file.

In the client application address is represented with IP so I think the hostname doesn't resolve to the correct IP as "sqlcmd --servers=" doesn't refuse the connection.
Also doing

[voltdb1@dubdcr01 VoltDB]$ voltadmin shutdown -H
Status: -1
Information: Connection broken

[voltdb1@dubdcr01 VoltDB]$

shuts down the database properly, Thanks for your suggestion.