I have written a small library that calls the C Client Library to retrieve a record given a key.
This runs fine when doing a small number of calls. However when I apply high load I am getting process death with signal 11.
Is there another way I should do the calls?
Specifically, it looks like the act of calling “aerospike_get_key” is what breaks under load.
In this method below I do the call and then clean the key and record right after. Any insight is most appreciated.
Rollin
RecordLookupInfo lookupRecord(const char * clusterMachines, int port, const char * asNamespace, const char * asSet, char * recordKey) {
if (as == NULL) {
as = aerospikeConnect(clusterMachines, port);
}
RecordLookupInfo lookupInfo;
// If there was any connection error then return a record with a null result.
as_record* record = NULL;
as_key key;
as_error err;
as_key_init(&key, asNamespace, asSet, recordKey);
// FILE *statusFile = fopen("/tmp/INC.txt", "a");
// fprintf(statusFile, "FOR KEY=%s\n", recordKey);
as_record_init(record, 0);
as_error_init(&err);
as_status status = aerospike_key_get(as, &err, NULL, &key, &record);
// fprintf(statusFile, "KEY=%s, STAT=%d, ERR=(%d) %s at %s[%s:%d]\n", recordKey, status, err.code, err.message, err.func, err.file, err.line);
// fclose(statusFile);
as_key_destroy(&key);
as_record_destroy((as_record *)record);
// lookupInfo.record = record;
// lookupInfo.errorCode = err.code;
lookupInfo.errorCode = 1000;
return lookupInfo;
}