Re: [RFC PATCH 2/6] bloom: prepare to discard incompatible Bloom filters
- From
- Jonathan Tan <jonathantanmy@google.com>
- Date
- Aug 24, 2023, 22:20 UTC
- Message-ID
- <20230824222051.2320003-1-jonathantanmy@google.com>
- In-Reply-To
- <a4cb5fe69247ba737a8373948c1f4ff8a150d283.1691426160.git.me@ttaylorr.com>
Taylor Blau <me@ttaylorr.com> writes:
Show 24 quoted lines
> diff --git a/bloom.c b/bloom.c
> index 9b6a30f6f6..739fa093ba 100644
> --- a/bloom.c
> +++ b/bloom.c
> @@ -250,6 +250,23 @@ static void init_truncated_large_filter(struct bloom_filter *filter,
> filter->version = version;
> }
>
> +struct bloom_filter *get_bloom_filter(struct repository *r, struct commit *c)
> +{
> + struct bloom_filter *filter;
> + int hash_version;
> +
> + filter = get_or_compute_bloom_filter(r, c, 0, NULL, NULL);
> + if (!filter)
> + return NULL;
> +
> + prepare_repo_settings(r);
> + hash_version = r->settings.commit_graph_changed_paths_version;
> +
> + if (!(hash_version == -1 || hash_version == filter->version))
> + return NULL; /* unusable filter */
> + return filter;
> +}I missed this the last time, but this should match what fill_bloom_key() does. Use get_bloom_filter_settings(), then compare filter->version to version 2 if hash_version is 2, and to version 1 otherwise.
Everything else looks good.