You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,8 @@
1
1
# CHANGELOG
2
+
# 0.3.4
3
+
* Makes io-uring an option disabled by default (AWS ECS crashes)
4
+
* Reverts harcoded values in Cozo/cozorocks that where left during mem leak fix and allow them to be passed as ENV VARS. `option` is the main way to set those values, ENV VARS will override them
5
+
2
6
# 0.3.3
3
7
4
8
## Bug Fixes
@@ -69,7 +73,7 @@
69
73
* Added `COZODB_BACKEND` environment variable support in Makefile
70
74
-`make build` or `make build-rocksdb` - Build with cozorocks (default)
71
75
-`COZODB_BACKEND=newrocksdb make build` or `make build-newrocksdb` - Build with rust-rocksdb
72
-
*Note: `rebar3_cargo` does not support passing Cargo features; use Makefile targets
76
+
*Build options work with `make`, `rebar3 compile`, and `mix compile` via env vars
73
77
74
78
## Improvements
75
79
* Improved Erlang serialization for better performance
|`COZODB_IO_URING`|`true`, `false`|`false`| Enable Linux io_uring async I/O |
243
+
244
+
### io_uring
245
+
246
+
Linux io_uring support for RocksDB async I/O is available as an opt-in build feature. It is **disabled by default** because the combination of io_uring + jemalloc + RocksDB 10.9.1 causes segfaults in container environments (Docker with named volumes, AWS ECS). This is due to TLS (Thread Local Storage) conflicts between RocksDB's per-thread io_uring instances, jemalloc's thread caches, and the BEAM VM's dirty IO scheduler threads.
247
+
248
+
When disabled, RocksDB uses standard `pread`/`pwrite` syscalls which perform well across all environments.
249
+
250
+
To enable io_uring (Linux-only, requires `liburing-dev`):
> **WARNING:** Only enable io_uring for bare-metal Linux deployments where you have verified it works with your kernel version. Do not enable in container environments (Docker, ECS, Kubernetes).
264
+
266
265
## Configuration
267
266
268
267
### jemalloc
@@ -320,6 +319,14 @@ For container compatibility, set `JEMALLOC_SYS_WITH_MALLOC_CONF` to bake safe de
io_uring is disabled by default, which is the recommended setting for container deployments. If you need to enable it (not recommended), pass the build arg:
By default, cozodb compiles with the `rocksdb` (cozorocks) backend. If you need the `newrocksdb` backend with environment variable configuration in your own project, you have two options:
343
+
# Default build (rocksdb backend, no io_uring)
344
+
make build
343
345
344
-
#### Option A: Fork and Modify (Recommended)
346
+
# With newrocksdb backend
347
+
COZODB_BACKEND=newrocksdb make build
345
348
346
-
1. Fork the cozodb repository
347
-
2. Modify `native/cozodb/Cargo.toml` to use `new-rocksdb-default` as the default features
348
-
3. Point your dependency to your fork
349
+
# With io_uring (Linux bare-metal only)
350
+
COZODB_IO_URING=true make build
349
351
350
-
#### Option B: Pre-build the NIF
352
+
# Combine options
353
+
COZODB_BACKEND=newrocksdb COZODB_IO_URING=true make build
0 commit comments