cloudbase-ai opened a new pull request, #7892:
URL: https://github.com/apache/shenyu/pull/7892

   API-debug records fail to save when serialized request headers exceed the 
1,024-character database column, including ordinary long Authorization values. 
This change stores complete headers as TEXT/CLOB and preserves existing records 
during upgrade.
   
   Refs #6362 — this PR addresses header storage. The issue remains open for 
its separately reported debugging behavior.
   
   - Update fresh MySQL/OceanBase, PostgreSQL/openGauss, Oracle and H2 schemas. 
Extend the current 2.7.2→2.7.3 migrations; Oracle copies the VARCHAR2 value 
into a CLOB column before replacing the old column. Include the persistent-H2 
version migration and document its ALTER statement.
   - Normalize absent headers consistently on all insert paths. Use scoped, 
explicit Oracle JDBC CLOB binding and `DBMS_LOB.COMPARE` for complete equality 
filtering; retain application-assigned IDs for Oracle batch inserts. Explicitly 
type nullable body parameters so header-only Oracle records can be saved.
   - Keep Oracle CLOB expressions intact with `INSERT ALL` batches. Detect 
multi-row tuples instead of counting parentheses in the existing prepare 
interceptor, so a single VALUES expression containing COALESCE/EMPTY_CLOB is 
not rewritten as a batch.
   - Add service/mapper regressions for create/update, selective/batch writes, 
60,000-character equality filters, Unicode, empty headers and migration 
preservation. Extend the native SQL CI matrix to preserve a legacy header/body 
row and accept long headers in upgrade/fresh flows.
   
   Validation:
   - Before the fix, all 7 persistence regression cases failed on the 
1,024-character limit or absent-header insertion.
   - JDK 17 `./mvnw -B -pl shenyu-admin -am verify -Djacoco.skip=true 
-Dmaven.javadoc.skip=true`: 2,890 tests, 0 failures/0 errors, 6 skipped; 
Checkstyle and RAT passed.
   - Native SQL harness: 33 offline tests passed.
   - Complete fresh schemas and upgrades from the immutable v2.7.1 baseline 
were exercised on MySQL 8.0 ARM64, PostgreSQL 15 amd64 and Oracle Free 23.7 
ARM64. Each flow ran the 7 committed persistence scenarios through the actual 
service/mapper, shipped SQL interceptors, JDBC drivers and database-ID 
provider: 42 native JDBC cases. Legacy header/body contents and IDs were 
checked after upgrade.
   - Oracle used cached image 
`gvenzl/oracle-free@sha256:8f0bf8432f44019cf1bc48a886fc6637fcf22c611e054b9bd7909d187b237764`;
 this differs from CI's Oracle 23.26.3 pin. OceanBase/openGauss were not 
executed locally. The five pinned amd64 CI jobs remain required; no complete 
native CI-gate success is claimed.
   
   Upgrade compatibility: stop Admin writers and back up `mock_request_record` 
before the one-time migration. MySQL TEXT has no portable literal default on 
5.7, so updated Admin inserts explicitly supply the normalized header; direct 
SQL writers must supply a header value. MySQL/OceanBase TEXT retains the native 
65,535-byte limit. Details are in `db/upgrade/upgrade-guide.md`.
   


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