Dear team, I’m using aerospike-server-community-4.6.0.2 and aerospike-client-c-4.6.6 on Red Hat Enterprise Linux Server release 7.5. I’m facing some difficulties while trying to insert a nested map in Aerospike.
Please find below a sample c++ function that I’m using:
int insertNestedMap(aerospike* aero)
{
as_cdt_ctx ctx;
as_cdt_ctx_inita(&ctx, 1);
as_string str;
as_string_init(&str,(char*) "outer_key", false);
as_cdt_ctx_add_map_key(&ctx, (as_val*)&str);
as_operations ops;
as_operations_inita(&ops, 1);
as_string l_key;
as_string_init(&l_key, (char*)"inner_key", false);
as_integer l_val;
as_integer_init(&l_val, 11);
as_map_policy map_policy;
as_map_policy_init(&map_policy);
as_operations_map_put(&ops, "bin_name", &ctx, &map_policy, (as_val*)&l_key, (as_val*)&l_val);
as_error l_asError;
as_record* rec = NULL;
as_key key;
as_key_init_str(&key, "test", "test_nested_map", "k1");
as_status l_operateStatus = aerospike_key_operate(aero, &l_asError, NULL, &key, &ops, &rec);
if(l_operateStatus != AEROSPIKE_OK)
{
printf("\n[%s::%d]Error [%d] , Error_Msg-->%s-- \n",__FILE__,__LINE__,l_asError.code, l_asError.message);
as_operations_destroy(&ops);
as_record_destroy(rec);
return -1;
}
else
{
printf("\nNested Map successfully inserted\n");
as_operations_destroy(&ops);
as_record_destroy(rec);
return 0;
}
}
My client program is getting the below error:
Error [4] , Error_Msg-->172.16.129.68:3000 AEROSPIKE_ERR_REQUEST_INVALID--
In the server logs, I see the following:
WARNING (rw): (write.c:1891) {test} write_master: failed as_bin_cdt_alloc_modify_from_client() <Digest>:0xd09c52914e9b556c651769606812bf5040108bed
Please let me know what’s going wrong here. Also, I don’t understand understand how to use as_map_policy except the default values. The documentation is not very clear as to how to set the required policy in the structure. Kindly guide me on that as well.
Thanks!