Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
331039d
Add test case that enables shared memory TODO - valgrind shows an uni…
juliannguyen4 May 18, 2026
1bb838d
update C client to get Gagan's fix for the shmem uninitialized read
juliannguyen4 May 18, 2026
2b76744
Update internal macro names from the C client
juliannguyen4 May 18, 2026
afdc3eb
Try updating as_exp_map_* macros to resolve compiler errors
juliannguyen4 May 19, 2026
82f51f9
Also update macros further down the code path
juliannguyen4 May 19, 2026
10ffbfa
Address test syntax failing
juliannguyen4 May 19, 2026
eb6a5c0
Add 2nd test case where multiple clients share the same shared memory
juliannguyen4 May 19, 2026
3fe5725
Address bad test syntax. Also make sure shm is enabled
juliannguyen4 May 19, 2026
4d2397a
Update hardcoded shmem key to address abort crash in c client's as_po…
juliannguyen4 May 19, 2026
b15cda4
Use shm key that is hardcoded in as_config_init's implementation. The…
juliannguyen4 May 19, 2026
aec7da9
Now we see that setting python client default shm key to 0xAC000000 s…
juliannguyen4 May 19, 2026
0cbc178
Revert "Now we see that setting python client default shm key to 0xAC…
juliannguyen4 May 20, 2026
b957531
use_shared_connection causes multiple clients to share the same C cli…
juliannguyen4 May 20, 2026
8bba73b
Pull c client fix to address shared memory crash
juliannguyen4 May 20, 2026
37c13ea
point C client back to stage with the shmem fix
juliannguyen4 May 26, 2026
5c14577
Merge remote-tracking branch 'origin/dev' into CLIENT-4834-fix-memory…
juliannguyen4 May 26, 2026
b21ef44
Revert default shmem key to 0xA8000000 for now. I don't believe chang…
juliannguyen4 May 26, 2026
730ab6f
cache-gh-artifact-in-jfrog.yml: fix jf rt upload passing DRY_RUN_FLAG…
juliannguyen4 May 26, 2026
8823713
Debug: show log file size to compare on linux vs macos
juliannguyen4 May 26, 2026
c449dff
I guess du needs root privileges to read files in system directory
juliannguyen4 May 26, 2026
f4871c5
Merge remote-tracking branch 'origin/dev' into CLIENT-4834-fix-memory…
juliannguyen4 May 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .github/workflows/test-artifact.yml
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,13 @@ jobs:

- name: Show server logs to debug test results
if: ${{ always() && inputs.run-integration-tests && steps.run-server.conclusion == 'success' }}
run: docker logs "$CONTAINER_NAME"
run: |
# For debugging: get log size (logs can take from a few minutes to over 20 minutes to print. This hasn't happened before the release bundle PR was merged)
if [[ "${{ runner.os }}" != "Windows" ]]; then
log_file_path=$(docker inspect --format='{{.LogPath}}' "$CONTAINER_NAME")
sudo du -h "$log_file_path"
fi
docker logs "$CONTAINER_NAME"
shell: bash
env:
CONTAINER_NAME: ${{ steps.run-server.outputs.container-name }}
Expand Down
4 changes: 2 additions & 2 deletions aerospike_helpers/expressions/map.py
Original file line number Diff line number Diff line change
Expand Up @@ -1495,7 +1495,7 @@ class MapGetKeys(_BaseExpr):
Return a list of keys from a map.
"""

_op = aerospike._AS_EXP_CODE_MAP_KEYS
_op = aerospike._AS_EXP_CODE_MAP_KEYS_IN

def __init__(
self,
Expand All @@ -1516,7 +1516,7 @@ class MapGetValues(_BaseExpr):
Return a list of values from a map.
"""

_op = aerospike._AS_EXP_CODE_MAP_VALUES
_op = aerospike._AS_EXP_CODE_MAP_VALUES_IN

def __init__(
self,
Expand Down
4 changes: 2 additions & 2 deletions src/main/aerospike.c
Original file line number Diff line number Diff line change
Expand Up @@ -590,8 +590,8 @@ static struct module_constant_name_to_value module_constants[] = {

EXPOSE_MACRO(_AS_EXP_CODE_REMOVE_RESULT),
EXPOSE_MACRO(_AS_EXP_CODE_IN_LIST),
EXPOSE_MACRO(_AS_EXP_CODE_MAP_KEYS),
EXPOSE_MACRO(_AS_EXP_CODE_MAP_VALUES),
EXPOSE_MACRO(_AS_EXP_CODE_MAP_KEYS_IN),
EXPOSE_MACRO(_AS_EXP_CODE_MAP_VALUES_IN),

EXPOSE_STRING_MACRO_FOR_AEROSPIKE_HELPERS(_CDT_FLAGS_KEY),
EXPOSE_STRING_MACRO_FOR_AEROSPIKE_HELPERS(_CDT_APPLY_MOD_EXP_KEY),
Expand Down
12 changes: 6 additions & 6 deletions src/main/convert_expressions.c
Original file line number Diff line number Diff line change
Expand Up @@ -351,8 +351,8 @@ static as_status get_expr_size(int *size_to_alloc, int *intermediate_exprs_size,
[OP_MAP_SIZE] = EXP_SZ(as_exp_map_size(NULL, NIL)),
[OP_MAP_GET_BY_KEY] =
EXP_SZ(as_exp_map_get_by_key(NULL, 0, 0, NIL, NIL)),
[_AS_EXP_CODE_MAP_KEYS] = EXP_SZ(as_exp_map_keys(NIL)),
[_AS_EXP_CODE_MAP_VALUES] = EXP_SZ(as_exp_map_values(NIL)),
[_AS_EXP_CODE_MAP_KEYS_IN] = EXP_SZ(as_exp_map_keys_in(NIL)),
[_AS_EXP_CODE_MAP_VALUES_IN] = EXP_SZ(as_exp_map_values_in(NIL)),
[OP_MAP_SIZE] = EXP_SZ(as_exp_map_size(NULL, NIL)),
[OP_MAP_GET_BY_KEY_RANGE] =
EXP_SZ(as_exp_map_get_by_key_range(NULL, 0, NIL, NIL, NIL)),
Expand Down Expand Up @@ -1245,11 +1245,11 @@ add_expr_macros(AerospikeClient *self, as_static_pool *static_pool,
APPEND_ARRAY(1, as_exp_map_size(temp_expr->ctx,
NIL)); // - 1 for bin
break;
case _AS_EXP_CODE_MAP_KEYS:
APPEND_ARRAY(1, as_exp_map_keys(NIL)); // - 1 for bin
case _AS_EXP_CODE_MAP_KEYS_IN:
APPEND_ARRAY(1, as_exp_map_keys_in(NIL)); // - 1 for bin
break;
case _AS_EXP_CODE_MAP_VALUES:
APPEND_ARRAY(1, as_exp_map_values(NIL)); // - 1 for bin
case _AS_EXP_CODE_MAP_VALUES_IN:
APPEND_ARRAY(1, as_exp_map_values_in(NIL)); // - 1 for bin
break;
case OP_MAP_GET_BY_KEY:
if (get_int64_t(err, AS_PY_MAP_RETURN_KEY, temp_expr->pydict,
Expand Down
27 changes: 27 additions & 0 deletions test/new_tests/test_shared_memory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import aerospike
import pytest


@pytest.mark.usefixtures("connection_config")
class TestSharedMemory:
@pytest.fixture(autouse=True)
def setup(self):
self.__class__.connection_config["shm"] = {}

def test_one_client(self):
client = aerospike.client(self.connection_config)

assert client.is_connected()

client.close()

def test_multiple_clients(self):

client1 = aerospike.client(self.connection_config)
assert client1.is_connected()

client2 = aerospike.client(self.connection_config)
assert client2.is_connected()

client1.close()
client2.close()
Loading