You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Dominic Letz (JIRA)" <ji...@apache.org> on 2015/01/05 06:21:34 UTC

[jira] [Updated] (CASSANDRA-8559) OOM caused by large tombstone warning.

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