yixianOu opened a new issue, #12815:
URL: https://github.com/apache/apisix/issues/12815
### Current Behavior
## Error Details
**CI Job:** `build (ubuntu-latest,
linux_apisix_current_luarocks_in_customed_nginx)`
**Error Log:**
```
2025/12/12 06:10:14 [error] 95223#95223: *1 [lua] config_etcd.lua:602:
load_full_data():
failed to check item data of [/apisix/routes]
err:object matches none of the required: ["plugins","uri"] or
["upstream","uri"] or
["upstream_id","uri"] or ["service_id","uri"] or ["plugins","uris"] or
["upstream","uris"]
or ["upstream_id","uris"] or ["service_id","uris"] or ["script","uri"] or
["script","uris"]
,val: {"priority":0,"status":1,"uri":"/2"}, context: init_worker_by_lua*
```
## Impact Scope
**Affected CI Jobs:**
- `linux_apisix_current_luarocks`
- `linux_apisix_current_luarocks_in_customed_nginx`
**Trigger Conditions:**
- Any PR that modifies files not excluded by workflow paths-ignore filters
- Runs all CLI tests in `t/cli/test_*.sh` including
`test_etcd_sync_event_handle.sh`
**False Positive Nature:**
- It's a pre-existing incompatibility between the test's assumptions and
APISIX's current error handling in `config_etcd.lua`
### Expected Behavior
### Behavior Mismatch
**Expected Behavior (per test design):**
- APISIX should gracefully skip invalid route objects during sync event
processing
- Route `/2` should remain in its last valid state (returning 503)
- Other routes should be updated successfully
**Actual Behavior (current APISIX):**
- `load_full_data()` in `apisix/core/config_etcd.lua` throws an error when
encountering the invalid route
- The error occurs during `init_worker_by_lua*` phase, causing worker
initialization to fail
- The entire APISIX instance fails to start, blocking the CI pipeline
### Source of Invalid Route
The invalid route object `{"uri":"/2"}` is **intentionally created** by the
test script at line 78:
**File:** `t/cli/test_etcd_sync_event_handle.sh`
**Line 78:**
```bash
etcdctl --endpoints=127.0.0.1:2379 --user=root:apache-api6-sync put
/apisix/routes/2 '{"uri":"/2"}' ## set incorrect configuration
```
### Error Logs
2025/12/13 12:48:48 [error] 158013#158013: *691057 [lua]
config_etcd.lua:743: sync_data(): failed to check item data of [/apisix/routes]
err:object matches none of the required: ["plugins","uri"] or
["upstream","uri"] or ["upstream_id","uri"] or ["service_id","uri"] or
["plugins","uris"] or ["upstream","uris"] or ["upstream_id","uris"] or
["service_id","uris"] or ["script","uri"] or ["script","uris"] ,val:
{"uri":"/2","priority":0,"status":1}, context: ngx.timer
### Steps to Reproduce
## Reproduction Steps
```bash
# 1. Start etcd and APISIX
make ci-env-up
make init
make run
# 2. Manually insert the invalid route
etcdctl --endpoints=127.0.0.1:2379 put /apisix/routes/2 '{"uri":"/2"}'
# 3. Restart APISIX to trigger load_full_data()
./bin/apisix stop
./bin/apisix start
# 4. Observe the error
grep "failed to check item data" logs/error.log
```
**Expected:** Worker initialization fails with schema validation error
**Actual:** Same as expected (this is the bug - it should NOT fail)
## Files Referenced
- `t/cli/test_etcd_sync_event_handle.sh` (lines 28-93)
- `apisix/core/config_etcd.lua` (line 602, function `load_full_data()`)
- `.github/workflows/cli.yml` (job definition)
- `ci/linux_apisix_current_luarocks_runner.sh` (test execution)
### Environment
- APISIX version: 3.14.1 (Command: ./bin/apisix version)
- Operating system: Linux d328ed307015 6.18.0-5-cachyos #1 SMP
PREEMPT_DYNAMIC Sun, 07 Dec 2025 12:44:05 +0000 x86_64 x86_64 x86_64 GNU/Linux
(Command: uname -a)
- OpenResty / Nginx: openresty/1.27.1.2 (Command: openresty -V)
- etcd version: 3.5
- APISIX Dashboard: Not installed (Command: apisix-dashboard version →
apisix-dashboard: not installed)
- Plugin runner version: null
- LuaRocks version: 3.12.0 (Command: luarocks --version)
--
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]