You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "btlqql (via GitHub)" <gi...@apache.org> on 2026/09/13 08:57:33 UTC
[PR] fix(nameserver): persist a cleared registry description and K8s columns [rocketmq-dashboard]
btlqql opened a new pull request, #4277:
URL: https://github.com/apache/rocketmq-dashboard/pull/4277
## What is the purpose of the change
Blanking the K8s namespace, K8s ID or description of a NameServer registry entry had no effect. `NameserverRegistryService.update` replaces every editable field of the entry — `name` and `namesrvAddr` are `@NotBlank` in `UpdateNameserverRegistryDTO`, and `k8sNamespace`, `k8sId` and `description` are copied unconditionally onto the entity — so the request is a full replacement of the entry it addresses:
```java
entity.setK8sNamespace(command.getK8sNamespace());
entity.setK8sId(command.getK8sId());
entity.setDescription(command.getDescription());
...
int updated = nameserverMapper.updateById(entity);
```
Two things then line up to lose the clear. The cluster page's registry edit dialog submits a blanked optional field as an absent one (`web/src/pages/cluster/index.tsx:255-257` builds the payload with `k8sNamespace: values.k8sNamespace || undefined` and the same for `k8sId` and `description`), and MyBatis-Plus `updateById` omits null entity fields (`FieldStrategy.NOT_NULL`; there is no `update-strategy` override in `application.yml`), so those three columns were dropped from the SET clause and kept their previous values.
Clearing was therefore unreachable through the API: `null` meant "leave the column alone" (accidentally), and there is no clear flag as in general settings. The save reported success, `update` re-read the row and returned the retained value, and the dialog displayed the old text again with no error — which is where the operator notices, because a stale `k8sId` cannot be dropped from the UI.
The cleared optional columns are now assigned explicitly, mirroring the ACL clear-columns fix in #3342, while the non-null columns keep going through `updateById`. `name` / `namesrvAddr` validation, duplicate-name handling and the concurrent-delete checks are unchanged.
## Brief changelog
- `NameserverRegistryService.update`: assign `k8s_namespace`, `k8s_id` and `description` explicitly when the request carries no value for them, because `updateById` skips null entity fields.
- `NameserverRegistryServiceTest`: two new cases — a request that omits the three optional columns clears them through an explicit assignment; a request that submits them issues no extra assignment.
## Verification
Red first, on the unmodified implementation with only the new tests added:
```
mvn -f server/pom.xml -B -DskipITs -Dtest=NameserverRegistryServiceTest -DfailIfNoTests=false test
[ERROR] Tests run: 22, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.135 s <<< FAILURE! -- in org.apache.rocketmq.studio.cluster.nameserver.NameserverRegistryServiceTest
[ERROR] NameserverRegistryServiceTest.updateShouldClearOptionalColumnsThatTheRequestOmitsTest:368
[ERROR] Tests run: 22, Failures: 1, Errors: 0, Skipped: 0
[INFO] BUILD FAILURE
```
(`...:368` is the `verify(nameserverMapper).update(isNull(), captor.capture())` assertion — no assignment was issued for the cleared columns.)
Green after the change:
```
mvn -f server/pom.xml -B -DskipITs -Dtest=NameserverRegistryServiceTest -DfailIfNoTests=false test
[INFO] Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.126 s -- in org.apache.rocketmq.studio.cluster.nameserver.NameserverRegistryServiceTest
[INFO] BUILD SUCCESS
```
Whole backend suite on this branch (`mvn -f server/pom.xml -B -DskipITs test`): `Tests run: 2153, Failures: 5, Errors: 5, Skipped: 0`. I also ran the same command on the unmodified base commit `6c24d2ed`: `Tests run: 2151, Failures: 5, Errors: 5` with the identical 10 failing test ids — 8 need a POSIX `sh` CLI that this Windows machine does not have (`CliAgentProviderTest`, `ClaudeCodeAgentProviderTest`) and 2 are `AuthCorsIntegrationTest.shouldRejectNonAdminMutationBeforeControllerExecution` / `shouldStillRejectAnonymousProtectedRequests`, which also fail on the base and are aligned separately in #4217. No other test moved.
The DB path itself was not exercised end to end here (no MySQL in this environment); the regression test asserts the assignment that the fix issues, in the same style as the accepted ACL fix in #3342.
Fixes #4274
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(nameserver): persist a cleared registry description and K8s columns [rocketmq-dashboard]
Posted by "lizhimins (via GitHub)" <gi...@apache.org>.
lizhimins commented on PR #4277:
URL: https://github.com/apache/rocketmq-dashboard/pull/4277#issuecomment-5694507952
The three optional NameServer fields (registry description and the two K8s columns) really were sent as `|`-joined empty strings and never cleared server-side.
The fix itself is sound and comes with a test, so this is not a quality call. We have stopped
merging one-defect-per-PR patches out of this queue: the review and merge overhead per change is
high, and several of them touch files that other open PRs also touch.
Please regroup your open Studio fixes into one PR per functional domain (for example
instance/cluster persistence, alert rendering, AI tool input validation) and resubmit against the
current `rocketmq-studio` baseline — we will review the consolidated PRs. When you regroup, note
that other authors' patches on the same files are also being closed, so please pick one approach
per file rather than resubmitting the overlap.
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(nameserver): persist a cleared registry description and K8s columns [rocketmq-dashboard]
Posted by "lizhimins (via GitHub)" <gi...@apache.org>.
lizhimins closed pull request #4277: fix(nameserver): persist a cleared registry description and K8s columns
URL: https://github.com/apache/rocketmq-dashboard/pull/4277
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org