@Override
public void scanCallback(Key key, Record record) throws AerospikeException {
// TODO Auto-generated method stub
// Query for the total count of page hits if the page_title(2nd Bin) of
// the scanned record is not present in a local HashSet
boolean added = pageTitlesSet.add(record.getString("page_title"));
if (added == true) {
getCount(sets, clienT, record.getString("page_title"));
} else {
System.out.println();
}
}
The server is not responding to the scan request. Are there any messages regarding the scan in the server log?
Also, it’s not clear why you are opening/closing the client just to run a scan. A single client instance should remain open for the duration of the program.
Do the scan examples in the examples directory work for you?
The server is not responding to the scan request. Are there any messages regarding the scan in the server log?
There are no messages regarding the scan in the server log
Also, it’s not clear why you are opening/closing the client just to run a scan.
I am just trying to scan all the records and in the scanCallBack function I am trying to output the records whose bin 2 starts with a specific sequence of characters
A single client instance should remain open for the duration of the program.
Sure, I am maintaining only a single instance of the client and the program ends after the scanAll, so I close the client at the end
Do the scan examples in the examples directory work for you?
# Aerospike database configuration file.
# This stanza must come first.
service {
user root
group root
paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1.
pidfile /var/run/aerospike/asd.pid
service-threads 4
transaction-queues 4
transaction-threads-per-queue 4
proto-fd-max 15000
}
logging {
# Log file must be an absolute path.
file /var/log/aerospike/aerospike.log {
context any warning
context any info
context migrate debug
}
file /var/log/aerospike/udf.log {
context any critical
context udf info
context aggr info
}
}
network {
service {
address any
port 3000
# access-address 192.168.120.118
access-address 127.0.0.1 virtual
}
heartbeat {
mode multicast
address 239.1.99.222
port 9918
# To use unicast-mesh heartbeats, comment out the 3 lines above and
# use the following 4 lines instead.
# mode mesh
# port 3002
# mesh-address 10.1.1.1
# mesh-port 3002
interval 150
timeout 10
}
fabric {
port 3001
}
info {
port 3003
}
}
#namespace test {
# replication-factor 2
# memory-size 4G
# default-ttl 30d # 30 days, use 0 to never expire/evict.
#
# storage-engine memory
#}
namespace test {
replication-factor 2
memory-size 2G
default-ttl 5d # 5 days, use 0 to never expire/evict.
# storage-engine memory
# To use file storage backing, comment out the line above and use the
# following lines instead.
storage-engine device {
file /opt/aerospike/data/test.dat
filesize 5G
data-in-memory true # Store data in memory in addition to file.
}
}
Another command you can use to help you troubleshoot is to do “show scans”, which will give the state of the scan done by the database, weather done through java or aql.
It’s not clear what is really happening in your case. There is some sort of networking issue going on. I suggest adding logging statements in the client code to obtain more information about cause of failure and run packaged scan example.
For example:
MultiCommand.java: in readBytes() add
Log.info("readBytes " + length);
Connection.java: right before socket.connect() add
Log.info("Connect " + address);
Node.java: in getConnection() change first block to following:
Log.info("getConnection " + timeoutMillis);
while ((conn = connectionQueue.poll()) != null) {
if (conn.isValid()) {
try {
conn.setTimeout(timeoutMillis);
Log.info("found connection " + conn);
return conn;
}
catch (Exception e) {
// Set timeout failed. Something is probably wrong with timeout
// value itself, so don't empty queue retrying. Just get out.
Log.info("connection failed " + conn);
closeConnection(conn);
throw new AerospikeException.Connection(e);
}
}
Log.info("connection not valid " + conn);
closeConnection(conn);
}
Log.info("create connection");