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