Get returns signal 11 under high load


#1

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;
}

#2

Recommend looking at some of the examples that ships with the SDK to get the correct record setup