[Enhancement] FilterFactory duplicate-registration and unregister semantics lack tests
メンテナーはふだん 1 日以内に返信
評価
調査の方向性
filter/src/main/java/org/apache/rocketmq/filter/FilterFactory.java の register、unRegister、get から始めてください。その後、既存の FilterSpiTest を読み、そこで唯一のフィルターがどのように登録されているかを確認してください。重複した型のケース(IllegalArgumentException が発生し、元のインスタンスが保持されることを期待)、unRegister が以前のフィルターを返すこと、その後 get が null を返すこと、再登録が成功すること、そして SQL92 の下で2つ目の SqlFilter が拒否され、組み込みフィルターは引き続き動作することを確認するケースを追加してください。FilterSpiTest を実行して確認してください。
索引モデルが issue の本文から書いたものです。
説明
Description
FilterFactory (filter/src/main/java/org/apache/rocketmq/filter/FilterFactory.java) holds the registry of subscription filter SPIs used by the broker to compile subscriptions. Two of its guarantees have no test coverage:
- Duplicate registration is rejected, not overwritten:
registerthrowsIllegalArgumentExceptionwhen the type already exists (Filter spi type(%s) already exist!). If this guard regressed to a silent overwrite, a custom filter could silently replace the built-in SQL92 filter for every broker in the process. - Unregister/return semantics:
unRegisterreturns the removed filter (so callers can restore it) and the type becomes registerable again.
The existing FilterSpiTest only registers one filter and uses it; it never exercises duplicates, unregister/re-register, or protection of the built-in SQL92 entry.
Expected behavior
Extend FilterSpiTest: duplicate type registration throws and keeps the original instance; unregister returns the previous filter, makes get return null, and allows a fresh registration; registering a second SqlFilter (built-in SQL92 type) is rejected and leaves the built-in filter functional.
- 主要言語
- Java
- スター
- 22.6k
- フォーク
- 12k
- 平均マージ
- 6日 16時間
- マージ済み PR(30日)
- 18
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/rocketmq のほかの issue
-
[Bug] mqadmin createUser/updateUser trim the ACL password, storing a secret the caller never typed対応中かも @iloveeyjafjalla が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/rocketmq#11446 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] notifyMasterOnline aborts the long-polling wake-up with a NullPointerException when an arrival drains a bucket first対応中かも @iloveeyjafjalla が 2 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/rocketmq#11441 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] DefaultMQPushConsumer.shutdown() never stops the pop consume service, so its non-daemon threads keep the JVM alive対応中かも @iloveeyjafjalla が 3 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
apache/rocketmq#11427 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
[Enhancement] LogicExpression three-valued truth table and short-circuit behavior lack direct tests対応中かも @chennaji9 が 7 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/rocketmq#11339 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
[Enhancement] SyncStateInfo defensive-copy and epoch semantics lack direct tests対応中かも @chennaji9 が 7 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/rocketmq#11338 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
apache/rocketmq の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/rocketmq-dashboard#6896 ·
メンテナーはふだん 3 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
OpenIntegrationEngine/engine#496 ·
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
SasanLabs/VulnerableApp#836 ·
メンテナーはふだん 1 日以内に返信
-
enhancement frontend
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
Albertinesilva/backend-engineering-journey-java-springboot#46 ·