Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[Enhancement] FilterFactory duplicate-registration and unregister semantics lack tests

オープン 初心者向け
#11,340 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@chennaji9 がすでに取り組んでいます。

2026年10月9日 から。

  • #11349 @chennaji9 による — オープン

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
84/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
java
領域
testing

調査の方向性

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:

  1. Duplicate registration is rejected, not overwritten: register throws IllegalArgumentException when 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.
  2. Unregister/return semantics: unRegister returns 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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/rocketmq のほかの issue

apache/rocketmq の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。