Document Bloom/Cuckoo behaviour for wrong key types in existence checks#3560
Document Bloom/Cuckoo behaviour for wrong key types in existence checks#3560somechris wants to merge 1 commit into
Conversation
All of `BF.EXISTS`, `BF.MEXISTS`, `CF.EXISTS`, `CF.MEXISTS` yield `0`/`false` if the key is missing or of wrong type. Yet some of the docs wrongly stated that they respond with simple errors. We adjust the wording to reflect actual behaviour.
|
Hi, I’m Jit, a friendly security platform designed to help developers build secure applications from day zero with an MVS (Minimal viable security) mindset. In case there are security findings, they will be communicated to you as a comment inside the PR. Hope you’ll enjoy using Jit. Questions? Comments? Want to learn more? Get in touch with us. |
There was a problem hiding this comment.
Hi @somechris. Thank you for doing this, especially for fixing the return info. bugs!
While what you wrote matches the style used in other command pages, I thought I'd take the opportunity to modify the return information to be more English-like for this page. I have an action to do the same thing for all the command pages.
|
|
||
| One of the following: | ||
| * [Integer reply]({{< relref "/develop/reference/protocol-spec#integers" >}}): `1` means that, with high probability, `item` was already added to the filter, and `0` means that either the `key` does not exist or that the `item` had not been added to the filter. | ||
| * [Integer reply]({{< relref "/develop/reference/protocol-spec#integers" >}}): `1` means that, with high probability, `item` was already added to the filter, and `0` means that either the `key` does not exist, is of wrong type, or that the `item` had not been added to the filter. |
There was a problem hiding this comment.
[Integer reply]({{< relref "/develop/reference/protocol-spec#integers >}}), where a value of 1 means the item was probably already added to the filter. A value of 0 means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
| One of the following: | ||
| * [Boolean reply]({{< relref "/develop/reference/protocol-spec#booleans" >}}): `true` means that, with high probability, `item` was already added to the filter, and `false` means that either `key` does not exist or that `item` had not been added to the filter. | ||
| * [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) if invalid arguments are passed or `key` is not of the correct type. | ||
| * [Boolean reply]({{< relref "/develop/reference/protocol-spec#booleans" >}}): `true` means that, with high probability, `item` was already added to the filter, and `false` means that either `key` does not exist, is of wrong type, or that `item` had not been added to the filter. |
There was a problem hiding this comment.
[Boolean reply]({{< relref "/develop/reference/protocol-spec#booleans >}}), where a value of true means the item was probably already added to the filter. A value of false means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
| One of the following: | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [integer replies]({{< relref "/develop/reference/protocol-spec#integers" >}}), where `1` means that, with high probability, `item` was already added to the filter, and `0` means that `key` does not exist or that `item` was definitely not added to the filter. | ||
| * [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: in these cases: invalid arguments, wrong key type, or when the key was not found. | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [integer replies]({{< relref "/develop/reference/protocol-spec#integers" >}}), where `1` means that, with high probability, `item` was already added to the filter, and `0` means that `key` does not exist, is of wrong type, or that `item` was definitely not added to the filter. |
There was a problem hiding this comment.
An [array]({{< relref "/develop/reference/protocol-spec#arrays >}}) of [integers]({{< relref "/develop/reference/protocol-spec#integers" >}}), where each element corresponds to an item in the request. A value of 1 means the item was probably already added to the filter. A value of 0 means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
| One of the following: | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [boolean replies]({{< relref "/develop/reference/protocol-spec#booleans" >}}), where `true` means that, with high probability, `item` was already added to the filter, and `false` means that `key` does not exist or that `item` was definitely not added to the filter. | ||
| * [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: in these cases: invalid arguments, wrong key type, or when the key was not found. | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [boolean replies]({{< relref "/develop/reference/protocol-spec#booleans" >}}), where `true` means that, with high probability, `item` was already added to the filter, and `false` means that `key` does not exist, is of wrong type, or that `item` was definitely not added to the filter. |
There was a problem hiding this comment.
An [array]({{< relref "/develop/reference/protocol-spec#arrays >}}) of [booleans]({{< relref "/develop/reference/protocol-spec#booleans" >}}), where each element corresponds to an item in the request. A value of true means the item was probably already added to the filter. A value of false means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
|
|
||
| One of the following: | ||
| * [Integer reply]({{< relref "/develop/reference/protocol-spec#integers" >}}): `1` means that, with high probability, `item` was already added to the filter, and `0` means that either the `key` does not exist or that the `item` had not been added to the filter. | ||
| * [Integer reply]({{< relref "/develop/reference/protocol-spec#integers" >}}): `1` means that, with high probability, `item` was already added to the filter, and `0` means that either the `key` does not exist, is of wrong type, or that the `item` had not been added to the filter. |
There was a problem hiding this comment.
[Integer reply]({{< relref "/develop/reference/protocol-spec#integers >}}), where a value of 1 means the item was probably already added to the filter. A value of 0 means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
| One of the following: | ||
| * [Boolean reply]({{< relref "/develop/reference/protocol-spec#booleans" >}}): `true` means that, with high probability, `item` was already added to the filter, and `false` means that either `key` does not exist or that `item` had not been added to the filter. | ||
| * [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) if invalid arguments are passed or `key` is not of the correct type. | ||
| * [Boolean reply]({{< relref "/develop/reference/protocol-spec#booleans" >}}): `true` means that, with high probability, `item` was already added to the filter, and `false` means that either `key` does not exist, is of wrong type, or that `item` had not been added to the filter. |
There was a problem hiding this comment.
[Boolean reply]({{< relref "/develop/reference/protocol-spec#booleans >}}), where a value of true means the item was probably already added to the filter. A value of false means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
| One of the following: | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [integer replies]({{< relref "/develop/reference/protocol-spec#integers" >}}), where `1` means that, with high probability, `item` was already added to the filter, and `0` means that `key` does not exist or that `item` was definitely not added to the filter. See note in [`CF.DEL`]({{< relref "commands/cf.del/" >}}). | ||
| * [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: in these cases: invalid arguments, wrong key type, or when the key was not found. | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [integer replies]({{< relref "/develop/reference/protocol-spec#integers" >}}), where `1` means that, with high probability, `item` was already added to the filter, and `0` means that `key` does not exist, is of wrong type, or that `item` was definitely not added to the filter. See note in [`CF.DEL`]({{< relref "commands/cf.del/" >}}). |
There was a problem hiding this comment.
An [array]({{< relref "/develop/reference/protocol-spec#arrays >}}) of [integers]({{< relref "/develop/reference/protocol-spec#integers" >}}), where each element corresponds to an item in the request. A value of 1 means the item was probably already added to the filter. A value of 0 means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
| One of the following: | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [boolean replies]({{< relref "/develop/reference/protocol-spec#booleans" >}}), where `true` means that, with high probability, `item` was already added to the filter, and `false` means that `key` does not exist or that `item` was definitely not added to the filter. | ||
| * [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: in these cases: invalid arguments, wrong key type, or when the key was not found. | ||
| * [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [boolean replies]({{< relref "/develop/reference/protocol-spec#booleans" >}}), where `true` means that, with high probability, `item` was already added to the filter, and `false` means that `key` does not exist, is of wrong type, or that `item` was definitely not added to the filter. |
There was a problem hiding this comment.
An [array]({{< relref "/develop/reference/protocol-spec#arrays >}}) of [booleans]({{< relref "/develop/reference/protocol-spec#booleans" >}}), where each element corresponds to an item in the request. A value of true means the item was probably already added to the filter. A value of false means the item was definitely not added, key does not exist, or key contains a value of the wrong type.
|
Closing due to lack of activity. I'll follow up with a PR that makes the suggested edits. |
|
Thanks ❤️ |
All of
BF.EXISTS,BF.MEXISTS,CF.EXISTS,CF.MEXISTSyield0/falseif the key is missing or of wrong type.Yet some of the docs wrongly stated that they respond with simple errors. We adjust the wording to reflect actual behaviour.
Note
Low Risk
Documentation-only edits to command reference pages; no code or runtime behavior changes.
Overview
Updates Return information for
BF.EXISTS,BF.MEXISTS,CF.EXISTS, andCF.MEXISTSso docs match server behavior: missing keys and wrong key types both yield0/false(or per-item zeros in the multi variants), not type errors.For RESP3 on the single-key commands, wrong key type is no longer listed under simple errors—only invalid arguments are. On the multi commands, simple-error wording is tightened to invalid arguments only, removing duplicated phrasing and incorrect claims that wrong type or missing key produce errors.
Reviewed by Cursor Bugbot for commit 8b6d4ed. Bugbot is set up for automated code reviews on this repo. Configure here.