#18758·alluxio

[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.