cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-8559) OOM caused by large tombstone warning.
Date Mon, 05 Jan 2015 12:07:34 GMT


Sylvain Lebresne commented on CASSANDRA-8559:

I would have suspected that it's the {{deletionInfo()}} that is big, and I'm not sure why
we print that tbh (not only can it be rather big, even if you don't really do anything wrong,
but I'm also not entirely sure what kind of insights they are supposed to provide in that
case). So I simply suggest we remove that part

The slices however are here to allow the user to identify the query that does trigger the
warning and so I think we should keep them. We could of course limit the size of the message
we create for them, but tbh, I can't really imagine a real life situation where those could
be a problem (and if I'm wrong here and it's indeed the slices themselves that makes it OOM,
I do am really curious why you need such a crazy query) so I'm not sure how much it's worth

> OOM caused by large tombstone warning.
> --------------------------------------
>                 Key: CASSANDRA-8559
>                 URL:
>             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.ignored(), container.metadata().ksName,
container.metadata().cfName, count, sb, container.deletionInfo());
>         }
> {code}

This message was sent by Atlassian JIRA

View raw message