morningman opened a new pull request, #67734:
URL: https://github.com/apache/doris/pull/67734

   ### What problem does this PR solve?
   
   Issue Number: close #xxx
   
   Related PR: #67381
   
   Problem Summary:
   
   `arrow_flight_sql_p0/test_sql_cache_over_arrow_flight` is flaky. It primes 
four sql
   cache entries through the MySQL control session, runs the same statements 
over Arrow
   Flight, and then asserts the entries are still there, to prove that a flight 
query
   never consumes the cache. That closing block fails intermittently on both 
master and
   branch-4.1 — six times since the suite was added on 2026-09-02, most 
recently in p0
   build 124525, where the `select 1 as c, 'x' as s` entry was gone **299ms** 
after it had
   been primed:
   
   ```
   Exception in 
arrow_flight_sql_p0/test_sql_cache_over_arrow_flight.groovy(line 163):
           assertTrue(hasSqlCache(constantSql))
   org.opentest4j.AssertionFailedError: expected: <true> but was: <false>
   ```
   
   **Root cause.** The FE sql cache is a single Caffeine map shared by every 
session
   (`NereidsSqlCacheManager.sqlCaches`), bounded by 
`Config.sql_cache_manage_num`, which
   defaults to **100**. Caffeine admits a newcomer through a window sized at 
**1% of that
   bound**, so at the default the admission window holds a single entry: a just 
cached
   statement has frequency ~1 and loses the admission contest to an established 
victim as
   soon as any other session caches anything. `SessionVariable.enableSqlCache` 
defaults to
   `true`, so the rest of the p0 suite running concurrently against the same FE 
is already
   enough to evict it.
   
   The audit log rules out ordinary LRU pressure: only **15 distinct selects** 
ran cluster
   wide during that 299ms window, far fewer than the 100 an LRU would have 
needed. A local
   run against caffeine 3.2.4 reproduces the admission behaviour directly:
   
   ```
   maximumSize=100      1 other insert after mine -> survived  7/20
   maximumSize=100     15 other inserts after mine -> survived  8/20
   maximumSize=10000    1 other insert after mine -> survived 20/20
   maximumSize=10000   15 other inserts after mine -> survived 20/20
   ```
   
   This is not an FE bug — the sql cache is best effort and gives no retention 
guarantee.
   It is the suite asserting a property the cache does not provide. The other 
five sql
   cache suites in the repo (`mv_with_sql_cache`, `mtmv_with_sql_cache`,
   `parse_sql_from_sql_cache`, `union_all_compensate`, 
`union_rewrite_grace_big`) already
   raise the bound at their start for exactly this reason; this one was missing 
it. In p0
   build 124525 the failing suites ran at 21:54 and 22:01, before any of those 
suites
   raised the bound at 22:12.
   
   **Fix.** Raise `sql_cache_manage_num` to 10000 while the suite runs, and 
restore the
   previous value afterwards. The restore is deliberate: this suite runs about 
half an
   hour earlier in the p0 run than the five existing ones, and the ones that 
raise the
   bound without restoring it left **97k live `SqlCacheContext` instances** in 
the FE heap
   in the same build (post-GC live heap peaked at 4G of 8G in that window).
   
   ### Release note
   
   None
   
   ### Check List (For Author)
   
   - Test
       - [x] Regression test
       - [ ] Unit Test
       - [ ] Manual test (add detailed scripts or steps below)
       - [ ] No need to test or manual test. Explain why:
           - [ ] This is a refactor/code format and no logic has been changed.
           - [ ] Previous test can cover this change.
           - [ ] No code files have been changed.
           - [ ] Other reason
   
   - Behavior changed:
       - [x] No.
       - [ ] Yes.
   
   - Does this need documentation?
       - [x] No.
       - [ ] Yes.
   
   ### Check List (For Reviewer who merge this PR)
   
   - [ ] Confirm the release note
   - [ ] Confirm test cases
   - [ ] Confirm document
   - [ ] Add branch pick label
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   
   https://claude.ai/code/session_01Njd8iDxdqc19QbLdNtZ7Pt
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to