Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
8858458
This time really use the old images.
Apr 13, 2026
182a8ae
Try with sudo.
Apr 13, 2026
912722b
Attempted to enforce creation before writing for rados - does not work.
Apr 17, 2026
9d26cb7
Revert "Attempted to enforce creation before writing for rados - does…
Apr 17, 2026
0559660
Incomplete iterator impl.
Apr 19, 2026
b60cdd4
Experimented with rados_read. Works on the first test batch but not o…
Apr 24, 2026
18c2fc8
Revert "Experimented with rados_read. Works on the first test batch b…
Apr 24, 2026
8b9ec82
Read_Write now checks for object creation via `rados_stat`.
Apr 24, 2026
87368a7
Fixed the distributed case.
Apr 24, 2026
359240d
Initialized iterator to please GCC 13.3.0.
Apr 24, 2026
50e1ec1
Fix formatting.
Apr 24, 2026
a73cbff
Fix memory leak.
Apr 24, 2026
f9c2afa
Clean up the rados-util script.
Apr 25, 2026
27f0adf
Fix double free.
Apr 25, 2026
7c2db65
Initialize iterator.
Apr 25, 2026
4a5ff17
Really really fix double free.
Apr 25, 2026
ae7bdb4
Really really fix double free.
Apr 25, 2026
c29d6a3
Quick commit before matching server API.
Apr 28, 2026
820e1d1
Caching iterator result on creation for client backends.
May 1, 2026
a497fe1
Fix memory issue :)
May 1, 2026
83436e0
Moved strdup.
May 1, 2026
1f2eef3
Manually install librados in spack ci.
May 2, 2026
c4cb185
CI crashing.
May 3, 2026
fd3e317
CI crashing.
May 3, 2026
5887823
Fix silly typo.
May 3, 2026
16d0109
Properly initialize to NULL.
May 4, 2026
3f02a7a
Asan Pipeline.
May 6, 2026
a5850cd
Asan Pipeline.
May 6, 2026
de3e3ab
Asan Pipeline.
May 6, 2026
b7ec593
Revert "Asan Pipeline."
May 6, 2026
267893a
Merged master.
May 7, 2026
0bd7d37
Ceph Service Container
May 7, 2026
d139355
Fix: Pinned m4 version was not compatible with gcc-16.
Jan-Frase May 10, 2026
4fe35a3
DiD and CephAdm
Jan-Frase May 15, 2026
47d72ea
DiD and CephAdm
Jan-Frase May 15, 2026
da3c45c
DiD and CephAdm
Jan-Frase May 15, 2026
d1d6e80
DiD and CephAdm
Jan-Frase May 15, 2026
befe821
DiD and CephAdm
Jan-Frase May 15, 2026
44ddb3a
DiD and CephAdm
Jan-Frase May 15, 2026
9640c6e
DiD and CephAdm
Jan-Frase May 15, 2026
6d8232c
DiD and CephAdm
Jan-Frase May 15, 2026
7a9f2b8
DiD and CephAdm
Jan-Frase May 15, 2026
0784022
DiD and CephAdm
Jan-Frase May 15, 2026
ebfb031
DiD and CephAdm
Jan-Frase May 15, 2026
2818d57
DiD and CephAdm
Jan-Frase May 15, 2026
44e5e84
DiD and CephAdm
Jan-Frase May 15, 2026
ef5abda
DiD and CephAdm
Jan-Frase May 15, 2026
4f224cd
DiD and CephAdm
Jan-Frase May 15, 2026
80bb776
DiD and CephAdm
Jan-Frase May 15, 2026
a46f39b
DiD and CephAdm
Jan-Frase May 15, 2026
d2503c5
DiD and CephAdm
Jan-Frase May 15, 2026
c4d5821
DiD and CephAdm
Jan-Frase May 15, 2026
5b733ae
DiD and CephAdm
Jan-Frase May 15, 2026
8cf5194
DiD and CephAdm
Jan-Frase May 15, 2026
281d874
DiD and CephAdm
Jan-Frase May 15, 2026
cb9658e
DiD and CephAdm
Jan-Frase May 15, 2026
02de0c1
DiD and CephAdm
Jan-Frase May 15, 2026
35b4451
DiD and CephAdm
Jan-Frase May 15, 2026
942241f
DiD and CephAdm
Jan-Frase May 15, 2026
ab42a20
Rollback of ci.yml and meson.build
May 17, 2026
8a115a8
Seperate rados test.
May 17, 2026
f70cdb4
Seperate rados test.
May 17, 2026
e1fff23
Seperate rados test.
May 17, 2026
ca2fff9
Seperate rados test.
May 17, 2026
4dd80d3
Added some early returns.
May 17, 2026
27c3f17
Added some early returns.
May 17, 2026
d33bf7a
Added more sanity checks.
May 17, 2026
ed6cc9c
Added more sanity checks.
May 17, 2026
3f84a02
Revert to concatenation of namespace and name.
Jan-Frase May 22, 2026
b2a8d59
Revert to concatenation of namespace and name.
Jan-Frase May 22, 2026
3bae2d3
Revert to concatenation of namespace and name.
Jan-Frase May 22, 2026
d9a99cf
Revert to concatenation of namespace and name.
Jan-Frase May 27, 2026
67a3baa
Clean up iterator memory handling.
Jan-Frase May 29, 2026
b9b61c7
Clean up iterator memory handling.
Jan-Frase May 29, 2026
55d1304
Clean up iterator memory handling.
Jan-Frase May 29, 2026
3ce7242
Added more sanity checks.
May 29, 2026
9f61710
TEMP: Only run the distributed test.
May 29, 2026
5d45044
Wat
May 29, 2026
06142cc
I hate CI debugging.
May 29, 2026
2e6bc7e
I hate CI debugging.
May 29, 2026
fe48e35
I hate CI debugging.
May 29, 2026
f268747
I hate CI debugging.
May 29, 2026
43e86d0
Initalized a few more object_handles.
Jan-Frase May 30, 2026
a71a28f
Run full tests with valgrind?
Jan-Frase May 30, 2026
e6c50c5
ci debs
Jan-Frase May 30, 2026
d1c7d91
Pleas work:)
Jan-Frase May 30, 2026
4987c8f
Still hangs.
Jan-Frase May 30, 2026
1978039
Merged main.
Jan-Frase May 30, 2026
59f08b7
More initalizations.
Jan-Frase May 30, 2026
70f43cc
Some clean up.
Jan-Frase May 30, 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
41 changes: 41 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,47 @@ jobs:
sleep 10
./scripts/benchmark.sh --duration=0
./scripts/setup.sh stop
rados:
name: Rados
needs: dependencies
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false
show-progress: false

- name: Install dependencies
run: |
sudo apt update
sudo apt --yes --no-install-recommends install meson ninja-build pkgconf libglib2.0-dev libbson-dev libfabric-dev libgdbm-dev liblmdb-dev libsqlite3-dev libleveldb-dev libmongoc-dev libmariadb-dev librocksdb-dev libfuse3-dev libopen-trace-format-dev librados-dev

- name: Configure and build
env:
CC: clang
run: |
./scripts/ci/build.sh debug-no-sanitize system

- name: Create configuration
run: |
. scripts/environment.sh
julea-config --user --object-servers="$(hostname)" --kv-servers="$(hostname)" --db-servers="$(hostname)" --object-backend=rados --object-path=/var/snap/microceph/current/conf/ceph.conf:julea --kv-backend=lmdb --kv-path=/tmp/julea/kv/lmdb --db-backend=sqlite --db-path=/tmp/julea/db/sqlite

- name: Microceph setup
run: sudo ./scripts/rados-util.sh bootstrap

- name: Tests
run: |
. scripts/environment.sh
./scripts/setup.sh start
./scripts/test.sh
# sudo apt --yes --no-install-recommends install valgrind
# valgrind --leak-check=full --track-origins=yes julea-test
sleep 10
./scripts/test.sh
./scripts/setup.sh stop
doxygen:
name: Doxygen
runs-on: ubuntu-24.04
Expand Down
54 changes: 27 additions & 27 deletions backend/object/gio.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ typedef struct JBackendIterator JBackendIterator;

struct JBackendObject
{
gchar* path;
gchar* name;
GFileIOStream* stream;
};

typedef struct JBackendObject JBackendObject;

static gboolean
backend_create(gpointer backend_data, gchar const* namespace, gchar const* path, gpointer* backend_object)
backend_create(gpointer backend_data, gchar const* namespace, gchar const* name, gpointer* backend_object)
{
JBackendData* bd = backend_data;
JBackendObject* bo;
Expand All @@ -59,7 +59,7 @@ backend_create(gpointer backend_data, gchar const* namespace, gchar const* path,
GFileIOStream* stream;
gchar* full_path;

full_path = g_build_filename(bd->path, namespace, path, NULL);
full_path = g_build_filename(bd->path, namespace, name, NULL);
file = g_file_new_for_path(full_path);

j_trace_file_begin(full_path, J_TRACE_FILE_CREATE);
Expand All @@ -73,7 +73,7 @@ backend_create(gpointer backend_data, gchar const* namespace, gchar const* path,
j_trace_file_end(full_path, J_TRACE_FILE_CREATE, 0, 0);

bo = g_new(JBackendObject, 1);
bo->path = full_path;
bo->name = full_path;
bo->stream = stream;

*backend_object = bo;
Expand All @@ -84,23 +84,23 @@ backend_create(gpointer backend_data, gchar const* namespace, gchar const* path,
}

static gboolean
backend_open(gpointer backend_data, gchar const* namespace, gchar const* path, gpointer* backend_object)
backend_open(gpointer backend_data, gchar const* namespace, gchar const* name, gpointer* backend_object)
{
JBackendData* bd = backend_data;
JBackendObject* bo;
GFile* file;
GFileIOStream* stream;
gchar* full_path;

full_path = g_build_filename(bd->path, namespace, path, NULL);
full_path = g_build_filename(bd->path, namespace, name, NULL);
file = g_file_new_for_path(full_path);

j_trace_file_begin(full_path, J_TRACE_FILE_OPEN);
stream = g_file_open_readwrite(file, NULL, NULL);
j_trace_file_end(full_path, J_TRACE_FILE_OPEN, 0, 0);

bo = g_new(JBackendObject, 1);
bo->path = full_path;
bo->name = full_path;
bo->stream = stream;

*backend_object = bo;
Expand All @@ -119,16 +119,16 @@ backend_delete(gpointer backend_data, gpointer backend_object)

(void)backend_data;

file = g_file_new_for_path(bo->path);
file = g_file_new_for_path(bo->name);

j_trace_file_begin(bo->path, J_TRACE_FILE_DELETE);
j_trace_file_begin(bo->name, J_TRACE_FILE_DELETE);
ret = g_file_delete(file, NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_DELETE, 0, 0);
j_trace_file_end(bo->name, J_TRACE_FILE_DELETE, 0, 0);

g_object_unref(file);

g_object_unref(bo->stream);
g_free(bo->path);
g_free(bo->name);
g_free(bo);

return ret;
Expand All @@ -142,12 +142,12 @@ backend_close(gpointer backend_data, gpointer backend_object)

(void)backend_data;

j_trace_file_begin(bo->path, J_TRACE_FILE_CLOSE);
j_trace_file_begin(bo->name, J_TRACE_FILE_CLOSE);
ret = g_io_stream_close(G_IO_STREAM(bo->stream), NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_CLOSE, 0, 0);
j_trace_file_end(bo->name, J_TRACE_FILE_CLOSE, 0, 0);

g_object_unref(bo->stream);
g_free(bo->path);
g_free(bo->name);
g_free(bo);

return ret;
Expand All @@ -166,11 +166,11 @@ backend_status(gpointer backend_data, gpointer backend_object, gint64* modificat
GFile* file;
GFileInfo* file_info;

file = g_file_new_for_path(bo->path);
file = g_file_new_for_path(bo->name);

j_trace_file_begin(bo->path, J_TRACE_FILE_STATUS);
j_trace_file_begin(bo->name, J_TRACE_FILE_STATUS);
file_info = g_file_query_info(file, G_FILE_ATTRIBUTE_STANDARD_SIZE "," G_FILE_ATTRIBUTE_TIME_MODIFIED "," G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, G_FILE_QUERY_INFO_NONE, NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_STATUS, 0, 0);
j_trace_file_end(bo->name, J_TRACE_FILE_STATUS, 0, 0);

ret = (file_info != NULL);

Expand Down Expand Up @@ -217,9 +217,9 @@ backend_sync(gpointer backend_data, gpointer backend_object)

output = g_io_stream_get_output_stream(G_IO_STREAM(bo->stream));

j_trace_file_begin(bo->path, J_TRACE_FILE_SYNC);
j_trace_file_begin(bo->name, J_TRACE_FILE_SYNC);
ret = g_output_stream_flush(output, NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_SYNC, 0, 0);
j_trace_file_end(bo->name, J_TRACE_FILE_SYNC, 0, 0);

return ret;
}
Expand All @@ -237,13 +237,13 @@ backend_read(gpointer backend_data, gpointer backend_object, gpointer buffer, gu

input = g_io_stream_get_input_stream(G_IO_STREAM(bo->stream));

j_trace_file_begin(bo->path, J_TRACE_FILE_SEEK);
j_trace_file_begin(bo->name, J_TRACE_FILE_SEEK);
g_seekable_seek(G_SEEKABLE(bo->stream), offset, G_SEEK_SET, NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_SEEK, 0, offset);
j_trace_file_end(bo->name, J_TRACE_FILE_SEEK, 0, offset);

j_trace_file_begin(bo->path, J_TRACE_FILE_READ);
j_trace_file_begin(bo->name, J_TRACE_FILE_READ);
ret = g_input_stream_read_all(input, buffer, length, &nbytes, NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_READ, nbytes, offset);
j_trace_file_end(bo->name, J_TRACE_FILE_READ, nbytes, offset);

if (bytes_read != NULL)
{
Expand All @@ -266,13 +266,13 @@ backend_write(gpointer backend_data, gpointer backend_object, gconstpointer buff

output = g_io_stream_get_output_stream(G_IO_STREAM(bo->stream));

j_trace_file_begin(bo->path, J_TRACE_FILE_SEEK);
j_trace_file_begin(bo->name, J_TRACE_FILE_SEEK);
g_seekable_seek(G_SEEKABLE(bo->stream), offset, G_SEEK_SET, NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_SEEK, 0, offset);
j_trace_file_end(bo->name, J_TRACE_FILE_SEEK, 0, offset);

j_trace_file_begin(bo->path, J_TRACE_FILE_WRITE);
j_trace_file_begin(bo->name, J_TRACE_FILE_WRITE);
ret = g_output_stream_write_all(output, buffer, length, &nbytes, NULL, NULL);
j_trace_file_end(bo->path, J_TRACE_FILE_WRITE, nbytes, offset);
j_trace_file_end(bo->name, J_TRACE_FILE_WRITE, nbytes, offset);

if (bytes_written != NULL)
{
Expand Down
8 changes: 4 additions & 4 deletions backend/object/null.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@
#include <julea.h>

static gboolean
backend_create(gpointer backend_data, gchar const* namespace, gchar const* path, gpointer* backend_object)
backend_create(gpointer backend_data, gchar const* namespace, gchar const* name, gpointer* backend_object)
{
gchar* full_path;

(void)backend_data;

full_path = g_build_filename(namespace, path, NULL);
full_path = g_build_filename(namespace, name, NULL);

j_trace_file_begin(full_path, J_TRACE_FILE_CREATE);
j_trace_file_end(full_path, J_TRACE_FILE_CREATE, 0, 0);
Expand All @@ -41,13 +41,13 @@ backend_create(gpointer backend_data, gchar const* namespace, gchar const* path,
}

static gboolean
backend_open(gpointer backend_data, gchar const* namespace, gchar const* path, gpointer* backend_object)
backend_open(gpointer backend_data, gchar const* namespace, gchar const* name, gpointer* backend_object)
{
gchar* full_path;

(void)backend_data;

full_path = g_build_filename(namespace, path, NULL);
full_path = g_build_filename(namespace, name, NULL);

j_trace_file_begin(full_path, J_TRACE_FILE_OPEN);
j_trace_file_end(full_path, J_TRACE_FILE_OPEN, 0, 0);
Expand Down
Loading