Bug: sstableloader ignores the native port option
Status: Resolved
Priority: Normal
Resolution: Duplicate
Created: 17/Jan/22 11:48
Resolved: 23/May/23 23:17

sstableloader silently ignores the native port option and connects to default port.

E.g.
{code:java}
sstableloader -v -d 192.168.1.24 -p 32181 -sp 32182 -u USER -pw PASSWORD backups/test-workspace/test-table-9150b730742911ec9d011fb0ef4f5206 {code}
fails with
{code:java}
All host(s) tried for query failed (tried: /192.168.1.24:9042 (com.datastax.driver.core.exceptions.TransportException: [/192.168.1.24:9042] Cannot connect))
com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.1.24:9042 (com.datastax.driver.core.exceptions.TransportException: [/192.168.1.24:9042] Cannot connect))
        at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:270)
        at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:109)
        at com.datastax.driver.core.Cluster$Manager.negotiateProtocolVersionAndConnect(Cluster.java:1813)
        at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1726)
        at com.datastax.driver.core.Cluster.init(Cluster.java:214)
        at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:387)
        at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:366)
        at com.datastax.driver.core.Cluster.connect(Cluster.java:311)
        at org.apache.cassandra.utils.NativeSSTableLoaderClient.init(NativeSSTableLoaderClient.java:75)
        at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:183)
        at org.apache.cassandra.tools.BulkLoader.load(BulkLoader.java:83)
        at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:51)
Exception in thread "main" org.apache.cassandra.tools.BulkLoadException: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.1.24:9042 (com.datastax.driver.core.exceptions.TransportException: [/192.168.1.24:9042] Cannot connect))
        at org.apache.cassandra.tools.BulkLoader.load(BulkLoader.java:96)
        at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:51)
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.1.24:9042 (com.datastax.driver.core.exceptions.TransportException: [/192.168.1.24:9042] Cannot connect))
        at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:270)
        at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:109)
        at com.datastax.driver.core.Cluster$Manager.negotiateProtocolVersionAndConnect(Cluster.java:1813)
        at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1726)
        at com.datastax.driver.core.Cluster.init(Cluster.java:214)
        at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:387)
        at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:366)
        at com.datastax.driver.core.Cluster.connect(Cluster.java:311)
        at org.apache.cassandra.utils.NativeSSTableLoaderClient.init(NativeSSTableLoaderClient.java:75)
        at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:183)
        at org.apache.cassandra.tools.BulkLoader.load(BulkLoader.java:83)
        ... 1 more {code}
The solution is to pass the endpoint as '-d HOST:PORT', but it requires digging in the source code and it not documented.