dependabot[bot] opened a new pull request, #19962: URL: https://github.com/apache/druid/pull/19962
Bumps [com.github.fppt:jedis-mock](https://github.com/fppt/jedis-mock) from 1.1.12 to 1.1.17. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/fppt/jedis-mock/releases">com.github.fppt:jedis-mock's releases</a>.</em></p> <blockquote> <h2>1.1.17</h2> <p>This release is about <strong>string and set command fidelity</strong>: four commands that were missing are implemented, and the argument parsing behind them was tightened.</p> <h2>๐ New commands</h2> <ul> <li><strong><a href="https://valkey.io/commands/getex/"><code>GETEX</code></a></strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/813">#813</a>).</li> <li><strong><a href="https://valkey.io/commands/getrange/"><code>GETRANGE</code></a> and <code>SUBSTR</code></strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/815">#815</a>).</li> <li><strong><a href="https://valkey.io/commands/set/"><code>SET ... GET</code></a></strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/815">#815</a>) โ the option was parsed but silently ignored. It now replies with the previous value held by the key.</li> <li><strong><a href="https://valkey.io/commands/sintercard/"><code>SINTERCARD</code></a></strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/817">#817</a>) .</li> </ul> <h2>๐ Bug fixes</h2> <ul> <li><strong><code>SET</code> silently accepted unknown and conflicting options</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/815">#815</a>): <code>SET foo bar non-existing-option</code> stored the value and replied <code>OK</code>.</li> <li><strong><code>SET ... NX</code>/<code>XX</code> raised <code>WRONGTYPE</code> against a key of another type</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/815">#815</a>). <code>SET mylist v NX</code> must reply nil and <code>SET mylist v XX</code> must replace the list with a string; both errored instead.</li> <li><strong>Integer arguments were parsed more leniently than Redis</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/817">#817</a>). Redis uses <code>string2ll</code>, which rejects <code>+1</code>, <code>01</code>, <code>-0</code> and <code>" 1"</code>.</li> <li><strong>Set commands did not check their argument count</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/816">#816</a>): <code>SADD</code>, <code>SCARD</code>, <code>SDIFF</code>, <code>SINTER</code>, <code>SISMEMBER</code>, <code>SMEMBERS</code>, <code>SMOVE</code>, <code>SPOP</code>, <code>SREM</code>, <code>SSCAN</code>, <code>SUNION</code> and the <code>*STORE</code> variants now declare arity bounds and reply <code>ERR wrong number of arguments for '<cmd>' command</code> instead of accepting a malformed call.</li> </ul> <h2>๐งช Testing</h2> <ul> <li>Upstream native tests re-enabled: three <code>GETEX</code> cases in <code>unit/expire.tcl</code>, the <code>GETRANGE</code> blocks in <code>unit/type/string.tcl</code>, and all five <code>SINTERCARD</code> blocks in <code>unit/type/set.tcl</code>.</li> </ul> <h2>๐ผ Dependencies</h2> <ul> <li><code>org.redisson:redisson</code> 4.6.1 โ 4.7.0 (<a href="https://redirect.github.com/fppt/jedis-mock/issues/814">#814</a>). Test scope only; the runtime dependencies are unchanged.</li> </ul> <h2>1.1.16</h2> <h2>โจ Keyspace notifications</h2> <p>Jedis-Mock now emits keyspace notifications (<a href="https://redirect.github.com/fppt/jedis-mock/issues/406">#406</a>, <a href="https://redirect.github.com/fppt/jedis-mock/issues/809">#809</a>), so code that reacts to key changes โ Spring Session's <code>@EnableRedisIndexedHttpSession</code>, cache invalidation listeners, Redisson objects with listeners โ can be tested against the mock.</p> <ul> <li><strong><code>notify-keyspace-events</code> is a real configuration parameter</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/811">#811</a>). The flag string is parsed and validated instead of being stored verbatim, and <code>CONFIG GET</code> reports it back in Redis's canonical form (<code>Egx</code> โ <code>gxE</code>, <code>KEA</code> โ <code>AKE</code>). An unknown flag character is rejected with Redis's own message and leaves the previous value in place.</li> <li><strong>Both channel families are published</strong>: <code>__keyspace@<db>__:<key></code> (<code>K</code>) and <code>__keyevent@<db>__:<event></code> (<code>E</code>).</li> <li><strong>Event classes supported</strong>: <code>g</code> generic, <code>x</code> expired (<a href="https://redirect.github.com/fppt/jedis-mock/issues/811">#811</a>), and <code>$</code> string, <code>l</code> list, <code>s</code> set, <code>h</code> hash, <code>z</code> sorted set, <code>t</code> stream, <code>n</code> new-key (<a href="https://redirect.github.com/fppt/jedis-mock/issues/812">#812</a>) โ every class the mock can meaningfully support. See the new <em>Keyspace notifications</em> section in the README for the full event table and the remaining limitations.</li> <li>Event names and orderings were established by probing <code>redis:7.4-alpine</code> and pinned with comparison tests, not inferred from command names โ so the counter-intuitive ones are right: <code>DECRBY</code> reports <code>incrby</code>, <code>ZINCRBY</code> reports <code>zincr</code>, <code>UNLINK</code> reports <code>del</code>, <code>HSETNX</code>/<code>HMSET</code> report <code>hset</code>, a multi-element <code>LPUSH</code> reports one event, emptying a container adds a generic <code>del</code>, and <code>new</code> precedes the type's own event.</li> <li><strong><code>CLIENT REPLY ON|OFF|SKIP</code></strong> is implemented (<a href="https://redirect.github.com/fppt/jedis-mock/issues/811">#811</a>). It used to be a no-op that returned <code>+OK</code>, which desynchronised clients. Suppression covers command replies and errors, never pub/sub pushes.</li> </ul> <p>Not covered: the <code>e</code> (evicted), <code>m</code> (key-miss) and <code>d</code> (module) classes, <code>xgroup-*</code> events (the consumer-group commands are unimplemented), and events from background expiry โ the mock expires keys lazily, so a key nobody touches produces its <code>expired</code> event later than a real server would.</p> <h2>๐ Bug fixes</h2> <ul> <li><strong>Pub/Sub was scoped to a database instead of the server</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/810">#810</a>): a message published on db 0 was invisible to a subscriber on db 1. The subscription registries moved out of the per-database <code>RedisBase</code> into a server-wide <code>SubscriptionRegistry</code>, which also fixes two latent bugs โ <code>FLUSHDB</code>/<code>FLUSHALL</code> used to wipe channel subscriptions (real Redis touches neither), and a client that issued <code>SELECT</code> after subscribing unsubscribed against the wrong database, leaking its registration.</li> <li><strong><code>SUBSCRIBE</code>/<code>PSUBSCRIBE</code> framing did not match Redis</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/810">#810</a>): multiple arguments produced a single flat array built from <code>HashMap</code> iteration โ arbitrary order, duplicates collapsed, counter restarting at 1. Redis sends one three-element reply per argument, including duplicates, with the client's combined channel + pattern count. Jedis tolerated the old framing; stricter clients do not.</li> <li><strong><code>UNSUBSCRIBE</code>/<code>PUNSUBSCRIBE</code> did not always reply</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/810">#810</a>): no acknowledgement was sent for a channel the client was not subscribed to, and none at all when called without arguments while holding no subscriptions, so a client could wait forever for an ack that never came.</li> <li><strong>Disconnected clients stayed subscribed forever</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/810">#810</a>), inflating <code>PUBLISH</code> receiver counts and <code>PUBSUB NUMPAT</code> for the lifetime of the server. Subscriptions are now released when the connection closes.</li> <li><strong><code>PING</code> in subscribe mode</strong> returned a plain <code>PONG</code> instead of the RESP2 <code>[pong, message-or-empty]</code> array (<a href="https://redirect.github.com/fppt/jedis-mock/issues/810">#810</a>).</li> <li><strong><code>PUBSUB NUMSUB</code></strong> is now implemented (<a href="https://redirect.github.com/fppt/jedis-mock/issues/810">#810</a>).</li> <li><strong><code>SMOVE key key member</code> destroyed and recreated the set</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/812">#812</a>): Redis short-circuits when source and destination are the same key, but the mock ran <code>SREM</code> followed by <code>SADD</code>, so a single-member set was deleted and recreated. A data-correctness bug independent of notifications.</li> <li><strong>Six in-place mutations did not mark their key as modified</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/812">#812</a>) โ <code>LINSERT</code>, <code>LSET</code>, <code>LREM</code>, <code>LTRIM</code>, <code>XDEL</code>, <code>XTRIM</code> โ so a transaction watching that key was not aborted. <code>WATCH</code> now behaves as it does on a real server for these commands.</li> <li><strong><code>ZRANGESTORE</code> from a missing source left the destination silently deleted</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/812">#812</a>): the early-return path skipped the deletion signalling. <strong><code>SETRANGE</code> with a non-empty value</strong> now always counts as a write, matching Redis (<a href="https://redirect.github.com/fppt/jedis-mock/issues/812">#812</a>).</li> <li><strong>An <code>EVAL</code> could be entered without the BUSY gate seeing it</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/811">#811</a>): <code>ScriptingManager.start()</code> ran <em>after</em> the Lua environment was built, which on a cold <code>EVAL</code> takes hundreds of milliseconds. A command arriving on another connection in that window passed the BUSY check and then blocked on the data lock the script was about to take, with no way to ever be answered. Note that <code>lua-time-limit</code> now includes the environment setup time.</li> <li><strong><code>RedisServer.stop()</code> and disconnect cleanup could block behind a long-running script</strong> (<a href="https://redirect.github.com/fppt/jedis-mock/issues/811">#811</a>). The subscription registry guards itself with its own monitor, with lock ordering documented on the class.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/fppt/jedis-mock/commit/552137b927b128d7c59a8edb8c7ba8f3a153a1ec"><code>552137b</code></a> 1.1.17</li> <li><a href="https://github.com/fppt/jedis-mock/commit/7cf7ae53f3323e2f7a066bbbc57cea4f40e4308f"><code>7cf7ae5</code></a> Update list of supported operations</li> <li><a href="https://github.com/fppt/jedis-mock/commit/e64d65ece49f167a2b4b02c4aa99d5f20a5c57cd"><code>e64d65e</code></a> implement sintercard (<a href="https://redirect.github.com/fppt/jedis-mock/issues/817">#817</a>)</li> <li><a href="https://github.com/fppt/jedis-mock/commit/5c63edf9c625ce76a2cf6625f5e84a8902cd55ac"><code>5c63edf</code></a> control number of arguments for S-operations (<a href="https://redirect.github.com/fppt/jedis-mock/issues/816">#816</a>)</li> <li><a href="https://github.com/fppt/jedis-mock/commit/69f7faf00cdaeb4ddb8b5028602ee923b364c935"><code>69f7faf</code></a> Update list of supported operations</li> <li><a href="https://github.com/fppt/jedis-mock/commit/54c3291c10c4ac18d56977eebfb4caf519e41c0d"><code>54c3291</code></a> getrange/substr and SET ... GET support, plus two SET option bugs (<a href="https://redirect.github.com/fppt/jedis-mock/issues/815">#815</a>)</li> <li><a href="https://github.com/fppt/jedis-mock/commit/e7c74579f2836a374422f6244e7f27e0f006fd81"><code>e7c7457</code></a> Bump org.redisson:redisson from 4.6.1 to 4.7.0 (<a href="https://redirect.github.com/fppt/jedis-mock/issues/814">#814</a>)</li> <li><a href="https://github.com/fppt/jedis-mock/commit/08198c48f6b1e884c3d9aa0351b50edb0e6606ca"><code>08198c4</code></a> Update list of supported operations</li> <li><a href="https://github.com/fppt/jedis-mock/commit/04037c26091cc78bf35626b405e14d0a97a5c9c1"><code>04037c2</code></a> getex support (<a href="https://redirect.github.com/fppt/jedis-mock/issues/813">#813</a>)</li> <li><a href="https://github.com/fppt/jedis-mock/commit/969bbe9ebe5140566e95fe820ad4471dd7270422"><code>969bbe9</code></a> update snapshot version</li> <li>Additional commits viewable in <a href="https://github.com/fppt/jedis-mock/compare/v.1.1.12...v.1.1.17">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
