SEPURI-SAI-KRISHNA commented on PR #12393:
URL: https://github.com/apache/seatunnel/pull/12393#issuecomment-5740950176

   Thank you for this, and for saying clearly which parts you could verify and 
which you could not. That distinction is what made the review useful rather 
than just directional.
   
   I have taken the PR in a different direction as a result: the helper is now 
**removed** rather than repaired. The reasoning is in the updated description; 
the short version is that your Issue 4 turned out to be decisive, and it 
decides against fixing the method at all.
   
   **Issues 1 and 2: both confirmed, and both mine.**
   
   Issue 1 is the one I am least happy about. Earlier in this series, while 
investigating #12332, I decompiled `getTopicRouteInfoFromNameServer` and 
established that it always throws rather than returning null, and I wrote 
exactly that into a comment on #12332. Then I wrote a null guard against it 
here anyway. You are right that the guard is dead and that the first call for 
each topic would have thrown.
   
   Issue 2 I had not checked, and your reading is correct. 
`fetchNameServerAddr()` returns the field `nameSrvAddr`, which is assigned only 
inside the top-addressing success path; `setNamesrvAddr` writes 
`ClientConfig.namesrvAddr` and reaches the remoting client through 
`MQClientInstance.updateNameServerAddressList`, never that field. On a runner 
that cannot reach the top-addressing service it returns null and 
`ns.split(";")` throws. My comment claiming the client would "resolve the name 
server list itself" described behaviour the library does not have.
   
   **Issue 4: confirmed, and it is why the method is gone.**
   
   You said you could not determine which way this goes. It goes badly, and the 
broker jar settles it. `AdminBrokerProcessor.deleteTopic` calls 
`TopicConfigManager.deleteTopicConfig`, `MessageStore.cleanUnusedTopic` and, 
under `autoDeleteUnusedStats`, `BrokerStatsManager.onTopicDeleted`. There is no 
`ConsumerOffsetManager` call in that handler, so committed offsets survive a 
topic delete.
   
   Combined with `rocketMqContainer` being created in `@BeforeAll` and shared 
across every engine leg, a working delete gives 
`testSourceRocketMqTextTagToConsole` a topic reset to offset 0 while the 
group's committed offset stays at 32, so the second leg onward reads nothing 
against a 32-row assertion. That test passes today *because* the cleanup never 
happens.
   
   **One correction to the review.** You describe both confs as `MIN_ROW = 
MAX_ROW = 32`. `rocketmq-source_text_error_tag_to_console.conf` is `MIN_ROW = 
MAX_ROW = 0`, which is the point of that test: the tag filter matches nothing. 
So only `testSourceRocketMqTextTagToConsole` would have broken. That narrows 
the blast radius to one test but does not change the conclusion.
   
   **Issue 3: I think this one is already covered, and I would rather not add a 
redundant call.** `generateTestData` calls `waitForTopicRoute(topic)` at line 
453 before any send, and that helper both recreates the topic through 
`producer.createTopic` and asserts the route is visible through 
`RocketMqAdminUtil.offsetTopics`, which is the fresh-admin path the connector 
itself uses. #12323 placed it there deliberately so that all nine call sites 
are covered rather than each test separately. Since `executeJob` runs after 
`generateTestData`, the route is confirmed before submission. If you still see 
a gap I have missed, say so and I will add it.
   
   **Issue 5** is resolved by the comments going away with the method.
   
   **On the null cluster name**, where you noted the name server module is not 
pinned by this repo and so you could not check: I pulled 
`rocketmq-namesrv:4.9.4` from Maven Central. 
`DefaultRequestProcessor.deleteTopicInNamesrv` tests the cluster name for null 
and then for empty, and falls through to the global 
`RouteInfoManager.deleteTopic(topic)` in both cases. It is moot now, but it may 
be useful to you elsewhere, and you were right to treat my original wording as 
an assertion I had not earned.
   
   **Options I considered before removing it**, since this is a reversal rather 
than a refinement:
   
   1. Fix the helper and also reset the group's offsets after recreating the 
topic. Correct in principle, but it puts per-queue offset manipulation into a 
test cleanup helper and deepens its dependence on admin semantics that two 
earlier versions of this PR already got wrong.
   2. Remove it. Behaviour preserving in the strict sense, because the helper 
is a proven no-op: 14 logged failures and zero successes across three job logs. 
The callers then run exactly as they do today.
   3. Close this and file an issue. Leaves misleading code in the tree for the 
next person, who would likely "fix" it the way I first did.
   
   I took 2. It is the only one that is both an improvement and provably zero 
risk.
   
   What it does not do is give those two tests the isolation the helper's name 
promised. They have never had it. If that is wanted, a dedicated consumer group 
per topic in the two confs is the honest way, and I am glad to open it 
separately, but it changes test behaviour and does not belong in a patch that 
deletes dead code.
   


-- 
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]

Reply via email to