The GitHub Actions job "CI" on 
rocketmq-dashboard.git/fix/datasource-delete-body has failed.
Run started by GitHub user lizhimins (triggered by lizhimins).

Head commit for run:
c6b01dd2f31f2b583aa3316ef41dd201719e9d99 / unbridled-41 
<[email protected]>
fix(acl): translate a duplicate username on the plain-access update path

`createAndUpdatePlainAccessConfig` rewrites `username` to the accessKey
(`entity.setUsername(config.getAccessKey())`) and updates by id, but only its 
insert
branch translates a unique-key collision:

    if (existing != null) {
        userMapper.updateById(entity);          // uk_username violation escapes
    } else {
        try { userMapper.insert(entity); } catch (DuplicateKeyException e) { 
... 409 ... }
    }

So when another row already owns that username - the account was renamed away 
from it
through the ACL users form and the name was taken afterwards, or both happen
concurrently - the DuplicateKeyException reached the generic handler as 500
"Internal Server Error", and the whole upsert (account plus its rule 
replacement)
rolled back with no usable reason. `saveUser`, `replaceUser` and this method's 
own
insert already answer 409 with `aclUserConflict`; the update branch was the one 
path
left out (the merged duplicate-key fix #5072 covered the other two).

Translate it the same way.

Tests (server/): mvn -o -B -ntp test -Dtest='MybatisPlusAclRepositoryTest' -> 
Tests run:
26, Failures: 0, Errors: 0; the new case fails before this change (the raw
DuplicateKeyException escapes) and passes after it, asserting no rule write;
checkstyle passes.

Report URL: 
https://github.com/apache/rocketmq-dashboard/actions/runs/38222248960

With regards,
GitHub Actions via GitBox

Reply via email to