TSB-2023-03 Tiered & Local Storage - Corrupt metadata risk
Last updated: August 11, 2026
Executive Summary
Through monitoring of the Redpanda Cloud estate, Redpanda has identified on one cluster, that in memory constrained environments, Redpanda 22.x might potentially fail in ways that could cause data corruption in tiered storage and in local storage. This behaviour is not seen in Redpanda 23.1 because 23.1 has a different approach to error handling that prevents such occurrences.
Severity
High
Redpanda Products affected
Redpanda
Releases affected: 22.2.x, 22.3.x
Impact: If memory exhaustion occurs in Redpanda 22.2 or 22.3, Redpanda might potentially corrupt the on-disk metadata in either local or cloud storage, leading to unavailability of segments.
Immediate Action required
Yes
Action required
Redpanda recommends either:
- Upgrade to 23.1. Note: Users on 22.2 will need to upgrade to 22.3 before proceeding to 23.1.
- Set the --abort-on-seastar-bad-alloc startup flag by modifying /etc/redpanda/redpanda.yaml and perform a rolling restart of the cluster. Absence of the flag could mean that in the event of memory exhaustion in-memory and on-disk state of the system could become inconsistent. Ensuring the flag is turned on allows Redpanda to restart on failure-to-alloc-memory allowing for consistent recovery and continued predictable operation
Note: The --abort-on-seastar-bad-alloc flag means that any in-flight operations that occur when memory exhaustion occurs will be terminated, resulting in predictable failure scenarios.
Identifying if you have been affected by possible data corruption:
Redpanda recommends analysing the Redpanda logs to look for occurrences of the phrase “bad alloc”. If this term has been observed, please contact Redpanda Support.
Setting startup parameters
Setting startup parameters can be done by editing the /etc/redpanda/redpanda.yaml file to include the following section under the rpk element:
rpk:
additional_start_flags:
- "--abort-on-seastar-bad-alloc"
Perform a restart of the node:
- 1. Identify the node_id:
$ journalctl -u redpanda.service | grep 'Starting Redpanda with node_id' | tail -1
Jun 13 13:31:47 ip-172-31-29-70 rpk[254398]: INFO 2023-06-13 13:31:47,454 [shard 0] main - application.cc:1819 - Starting Redpanda with node_id 0, cluster UUID
- 2. Put the node in maintenance mode:
$ rpk cluster maintenance enable -w
Successfully enabled maintenance mode for node 0
Waiting for node to drain...
NODE-ID DRAINING FINISHED ERRORS PARTITIONS ELIGIBLE TRANSFERRING FAILED
0 false false false 0 0 0 0
0 false false false 0 0 0 0
0 false false false 0 0 0 0
0 false false false 0 0 0 0
0 true true false 27 0 11 0
3. Restart the node:
$ systemctl restart redpanda
4. Check that the flag has been correctly set:
$ journalctl -u redpanda.service | grep seastar-bad-alloc
Jun 13 13:42:09 ip-172-31-29-70 rpk[254613]: /opt/redpanda/bin/redpanda redpanda --redpanda-cfg /etc/redpanda/redpanda.yaml --abort-on-seastar-bad-alloc --lock-memory=false --io-properties={"disks":[{"
5. Remove the node from maintenance mode:
$ rpk cluster maintenance disable
Successfully disabled maintenance mode for node 0
Addressed in (RP Version): 23.1.x
References
Questions?: If you have any questions on this TSB, or need further guidance, please contact customer-success@redpanda.com / support@redpanda.com