[
https://issues.apache.org/jira/browse/CASSANDRA-8559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dominic Letz updated CASSANDRA-8559:
------------------------------------
Description:
When running with high amount of tombstones the error message generation from
CASSANDRA-6117 can lead to out of memory situation with the default setting.
Attached a heapdump viewed in visualvm showing how this construct created two
777mb strings to print the error message for a read query and then crashed OOM.
{code}
if (respectTombstoneThresholds() && columnCounter.ignored() >
DatabaseDescriptor.getTombstoneWarnThreshold())
{
StringBuilder sb = new StringBuilder();
CellNameType type = container.metadata().comparator;
for (ColumnSlice sl : slices)
{
assert sl != null;
sb.append('[');
sb.append(type.getString(sl.start));
sb.append('-');
sb.append(type.getString(sl.finish));
sb.append(']');
}
logger.warn("Read {} live and {} tombstoned cells in {}.{} (see
tombstone_warn_threshold). {} columns was requested, slices={}, delInfo={}",
columnCounter.live(), columnCounter.ignored(),
container.metadata().ksName, container.metadata().cfName, count, sb,
container.deletionInfo());
}
{code}
was:
When running with high amount of tombstones the error message generation from
CASSANDRA-6117 can lead to out of memory situation with the default setting.
Attached a heapdump viewed in visualvm showing how this construct is create a
777mb string to print the error message for a single read query.
{code}
if (respectTombstoneThresholds() && columnCounter.ignored() >
DatabaseDescriptor.getTombstoneWarnThreshold())
{
StringBuilder sb = new StringBuilder();
CellNameType type = container.metadata().comparator;
for (ColumnSlice sl : slices)
{
assert sl != null;
sb.append('[');
sb.append(type.getString(sl.start));
sb.append('-');
sb.append(type.getString(sl.finish));
sb.append(']');
}
logger.warn("Read {} live and {} tombstoned cells in {}.{} (see
tombstone_warn_threshold). {} columns was requested, slices={}, delInfo={}",
columnCounter.live(), columnCounter.ignored(),
container.metadata().ksName, container.metadata().cfName, count, sb,
container.deletionInfo());
}
{code}
> OOM caused by large tombstone warning.
> --------------------------------------
>
> Key: CASSANDRA-8559
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8559
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Environment: 2.0.11 / 2.1
> Reporter: Dominic Letz
> Attachments: Selection_048.png
>
>
> When running with high amount of tombstones the error message generation from
> CASSANDRA-6117 can lead to out of memory situation with the default setting.
> Attached a heapdump viewed in visualvm showing how this construct created two
> 777mb strings to print the error message for a read query and then crashed
> OOM.
> {code}
> if (respectTombstoneThresholds() && columnCounter.ignored() >
> DatabaseDescriptor.getTombstoneWarnThreshold())
> {
> StringBuilder sb = new StringBuilder();
> CellNameType type = container.metadata().comparator;
> for (ColumnSlice sl : slices)
> {
> assert sl != null;
> sb.append('[');
> sb.append(type.getString(sl.start));
> sb.append('-');
> sb.append(type.getString(sl.finish));
> sb.append(']');
> }
> logger.warn("Read {} live and {} tombstoned cells in {}.{} (see
> tombstone_warn_threshold). {} columns was requested, slices={}, delInfo={}",
> columnCounter.live(), columnCounter.ignored(),
> container.metadata().ksName, container.metadata().cfName, count, sb,
> container.deletionInfo());
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)