You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Kurt Greaves (JIRA)" <ji...@apache.org> on 2018/02/01 23:36:00 UTC

[jira] [Commented] (CASSANDRA-11163) Summaries are needlessly rebuilt when the BF FP ratio is changed

    [ https://issues.apache.org/jira/browse/CASSANDRA-11163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16349501#comment-16349501 ] 

Kurt Greaves commented on CASSANDRA-11163:
------------------------------------------

Patches for each branch below. So far I've only got a green test run for trunk. Failures for 3.0 and 3.11 seem flaky/unrelated so will keep trying.
|[trunk|https://github.com/apache/cassandra/compare/trunk...kgreav:14166-trunk]|[3.11|https://github.com/apache/cassandra/compare/cassandra-3.11...kgreav:14166-3.11]|[3.0|https://github.com/apache/cassandra/compare/cassandra-3.0...kgreav:14166-3.0]|
|[utests|https://circleci.com/gh/kgreav/cassandra/66]|

This patch also solves CASSANDRA-14166. Basically I've completely stopped regeneration of Summaries on startup (if BFFP is changed), and also stopped the behaviour implemented in CASSANDRA-5015 which would also regenerate the bloomfilters on startup.
There's definitely no reason to regenerate Summaries in this case, and as previously mentioned it's not great regenerating the bloomfilter unless you're going to persist it. I have added persistence for the bloomfilter (when it is regenerated), however I think it's a bad idea to do this on startup as it will likely be more time consuming than regenerating the summaries.

If an operator chooses to these can be regenerated through {{upgradesstables -a}}. Albeit that's not super efficient if you're just updating the bloomfilter, however I think it's good enough for the moment and a potential follow up ticket would be to add a nodetool command to regenerate bloomfilter/summaries/index/etc.

The new behaviour would be to:
# Never recreate Summary or bloomfilter when using an offline tool. Note that if the summary doesn't exist the tool will still create it in memory, but it won't persist it to disk (solving CASSANDRA-14166)
# Only regenerate the summary when it can't be loaded, OR when we've said to recreate the bloomfilter. However we only save the summary if we've been explicitly told to (which should be always EXCEPT for offline tools).
# Only regenerate and persist the bloomfilter when it's missing - not when it has changed. This means we rely on compactions/upgradesstables to update the bloomfilter. 

I've updated {{org.apache.cassandra.io.sstable.SSTableReaderTest#testOpeningSSTable}} to hopefully test all of these cases.

> Summaries are needlessly rebuilt when the BF FP ratio is changed
> ----------------------------------------------------------------
>
>                 Key: CASSANDRA-11163
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11163
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Brandon Williams
>            Assignee: Kurt Greaves
>            Priority: Major
>             Fix For: 3.0.x, 3.11.x, 4.x
>
>
> This is from trunk, but I also saw this happen on 2.0:
> Before:
> {noformat}
> root@bw-1:/srv/cassandra# ls -ltr /var/lib/cassandra/data/keyspace1/standard1-071efdc0d11811e590c3413ee28a6c90/
> total 221460
> drwxr-xr-x 2 root root      4096 Feb 11 23:34 backups
> -rw-r--r-- 1 root root        80 Feb 11 23:50 ma-6-big-TOC.txt
> -rw-r--r-- 1 root root     26518 Feb 11 23:50 ma-6-big-Summary.db
> -rw-r--r-- 1 root root     10264 Feb 11 23:50 ma-6-big-Statistics.db
> -rw-r--r-- 1 root root   2607705 Feb 11 23:50 ma-6-big-Index.db
> -rw-r--r-- 1 root root    192440 Feb 11 23:50 ma-6-big-Filter.db
> -rw-r--r-- 1 root root        10 Feb 11 23:50 ma-6-big-Digest.crc32
> -rw-r--r-- 1 root root  35212125 Feb 11 23:50 ma-6-big-Data.db
> -rw-r--r-- 1 root root      2156 Feb 11 23:50 ma-6-big-CRC.db
> -rw-r--r-- 1 root root        80 Feb 11 23:50 ma-7-big-TOC.txt
> -rw-r--r-- 1 root root     26518 Feb 11 23:50 ma-7-big-Summary.db
> -rw-r--r-- 1 root root     10264 Feb 11 23:50 ma-7-big-Statistics.db
> -rw-r--r-- 1 root root   2607614 Feb 11 23:50 ma-7-big-Index.db
> -rw-r--r-- 1 root root    192432 Feb 11 23:50 ma-7-big-Filter.db
> -rw-r--r-- 1 root root         9 Feb 11 23:50 ma-7-big-Digest.crc32
> -rw-r--r-- 1 root root  35190400 Feb 11 23:50 ma-7-big-Data.db
> -rw-r--r-- 1 root root      2152 Feb 11 23:50 ma-7-big-CRC.db
> -rw-r--r-- 1 root root        80 Feb 11 23:50 ma-5-big-TOC.txt
> -rw-r--r-- 1 root root    104178 Feb 11 23:50 ma-5-big-Summary.db
> -rw-r--r-- 1 root root     10264 Feb 11 23:50 ma-5-big-Statistics.db
> -rw-r--r-- 1 root root  10289077 Feb 11 23:50 ma-5-big-Index.db
> -rw-r--r-- 1 root root    757384 Feb 11 23:50 ma-5-big-Filter.db
> -rw-r--r-- 1 root root         9 Feb 11 23:50 ma-5-big-Digest.crc32
> -rw-r--r-- 1 root root 139201355 Feb 11 23:50 ma-5-big-Data.db
> -rw-r--r-- 1 root root      8508 Feb 11 23:50 ma-5-big-CRC.db
> root@bw-1:/srv/cassandra# md5sum /var/lib/cassandra/data/keyspace1/standard1-071efdc0d11811e590c3413ee28a6c90/ma-5-big-Summary.db
> 5fca154fc790f7cfa37e8ad6d1c7552c
> {noformat}
> BF ratio changed, node restarted:
> {noformat}
> root@bw-1:/srv/cassandra# ls -ltr /var/lib/cassandra/data/keyspace1/standard1-071efdc0d11811e590c3413ee28a6c90/
> total 242168
> drwxr-xr-x 2 root root      4096 Feb 11 23:34 backups
> -rw-r--r-- 1 root root        80 Feb 11 23:50 ma-6-big-TOC.txt
> -rw-r--r-- 1 root root     10264 Feb 11 23:50 ma-6-big-Statistics.db
> -rw-r--r-- 1 root root   2607705 Feb 11 23:50 ma-6-big-Index.db
> -rw-r--r-- 1 root root    192440 Feb 11 23:50 ma-6-big-Filter.db
> -rw-r--r-- 1 root root        10 Feb 11 23:50 ma-6-big-Digest.crc32
> -rw-r--r-- 1 root root  35212125 Feb 11 23:50 ma-6-big-Data.db
> -rw-r--r-- 1 root root      2156 Feb 11 23:50 ma-6-big-CRC.db
> -rw-r--r-- 1 root root        80 Feb 11 23:50 ma-7-big-TOC.txt
> -rw-r--r-- 1 root root     10264 Feb 11 23:50 ma-7-big-Statistics.db
> -rw-r--r-- 1 root root   2607614 Feb 11 23:50 ma-7-big-Index.db
> -rw-r--r-- 1 root root    192432 Feb 11 23:50 ma-7-big-Filter.db
> -rw-r--r-- 1 root root         9 Feb 11 23:50 ma-7-big-Digest.crc32
> -rw-r--r-- 1 root root  35190400 Feb 11 23:50 ma-7-big-Data.db
> -rw-r--r-- 1 root root      2152 Feb 11 23:50 ma-7-big-CRC.db
> -rw-r--r-- 1 root root        80 Feb 11 23:50 ma-5-big-TOC.txt
> -rw-r--r-- 1 root root     10264 Feb 11 23:50 ma-5-big-Statistics.db
> -rw-r--r-- 1 root root  10289077 Feb 11 23:50 ma-5-big-Index.db
> -rw-r--r-- 1 root root    757384 Feb 11 23:50 ma-5-big-Filter.db
> -rw-r--r-- 1 root root         9 Feb 11 23:50 ma-5-big-Digest.crc32
> -rw-r--r-- 1 root root 139201355 Feb 11 23:50 ma-5-big-Data.db
> -rw-r--r-- 1 root root      8508 Feb 11 23:50 ma-5-big-CRC.db
> -rw-r--r-- 1 root root        80 Feb 12 00:03 ma-8-big-TOC.txt
> -rw-r--r-- 1 root root     14902 Feb 12 00:03 ma-8-big-Summary.db
> -rw-r--r-- 1 root root     10264 Feb 12 00:03 ma-8-big-Statistics.db
> -rw-r--r-- 1 root root   1458631 Feb 12 00:03 ma-8-big-Index.db
> -rw-r--r-- 1 root root     10808 Feb 12 00:03 ma-8-big-Filter.db
> -rw-r--r-- 1 root root        10 Feb 12 00:03 ma-8-big-Digest.crc32
> -rw-r--r-- 1 root root  19660275 Feb 12 00:03 ma-8-big-Data.db
> -rw-r--r-- 1 root root      1204 Feb 12 00:03 ma-8-big-CRC.db
> -rw-r--r-- 1 root root     26518 Feb 12 00:04 ma-7-big-Summary.db
> -rw-r--r-- 1 root root     26518 Feb 12 00:04 ma-6-big-Summary.db
> -rw-r--r-- 1 root root    104178 Feb 12 00:04 ma-5-big-Summary.db
> root@bw-1:/srv/cassandra# md5sum /var/lib/cassandra/data/keyspace1/standard1-071efdc0d11811e590c3413ee28a6c90/ma-5-big-Summary.db 
> 5fca154fc790f7cfa37e8ad6d1c7552c 
> {noformat}
> This hurts startup time and appears to do nothing useful whatsoever.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org