[2.9.3] Non-positive entry.size.max causes Ratis journal failure
Author: velpro-8620Created Aug 24, 2026Updated Aug 24, 2026
Labelstype-bug
Alluxio Version:
2.9.3
Source commit: 44b59ac84b0bcef9b268a81481d08da96dc27d58
Java version: 11
Describe the bug
The configuration property
alluxio.master.embedded.journal.entry.size.max accepts 0MB without
validation.
Alluxio then configures the embedded Ratis journal with:
raft.server.log.appender.buffer.byte-limit = 0
When the master writes a journal entry, the Ratis journal writer fails with:
java.lang.IllegalStateException: total = 51 > buf.length 8
at org.apache.ratis.server.raftlog.segmented.SegmentedRaftLogOutputStream.write
The master transitions from PRIMARY to STANDBY, and subsequent client
requests fail.
The equivalent value 00mb produces the same behavior.
To Reproduce
1. Use Alluxio 2.9.3 with Java 11 on Linux.
2. Configure conf/alluxio-site.properties as follows:
alluxio.master.hostname=localhost
alluxio.master.mount.table.root.ufs=/tmp/alluxio-ufs
alluxio.work.dir=/tmp/alluxio-work
alluxio.worker.tieredstore.level0.dirs.path=/dev/shm
alluxio.worker.tieredstore.level0.dirs.quota=512MB
alluxio.master.embedded.journal.entry.size.max=0MB
3. Use fresh directories and set:
export ALLUXIO_RAM_FOLDER=/dev/shm
mkdir -p /tmp/alluxio-ufs /tmp/alluxio-work
4. Format and start Alluxio locally:
./bin/alluxio format
./bin/alluxio-start.sh local
5. Trigger a master journal write:
./bin/alluxio fs mkdir /test
6. Check logs/master.log and logs/job_master.log.
The logs contain:
raft.server.log.appender.buffer.byte-limit = 0 (custom)
followed by the IllegalStateException shown above.
Expected behavior
Alluxio should reject
alluxio.master.embedded.journal.entry.size.max <= 0 during configuration
validation with a clear error message, or fall back to a safe positive default.
It should not start Ratis with a zero-byte appender buffer limit.
Urgency
Medium.
The issue requires an invalid configuration value, but once configured it can
cause embedded journal writes to fail, destabilize the master, and make client
requests fail.
Are you planning to fix it
No. I am reporting the issue and do not currently have a pull request prepared.
Additional context
The property is declared as a generic data-size property without a positive-value
validation check. The value is then passed directly to the Ratis appender buffer
configuration. RaftJournalWriter also computes
entry.size.max / 3, which becomes zero for a zero-valued configuration.
Related changes:
- https://github.com/Alluxio/alluxio/pull/12650
- https://github.com/Alluxio/alluxio/pull/12695
These changes introduced the Ratis journal-size configuration and batching logic,
but they do not reject zero or negative values.
I did not find an existing Alluxio issue specifically covering a non-positive
entry.size.max value causing a zero Ratis buffer limit and journal write
failure.Source: Alluxio/alluxio