| # FE Core Module — Review Guide |
| |
| ## Locking |
| |
| - [ ] Metadata-locking paths avoid RPC, external IO, and journal waits while holding catalog/database/table locks? |
| - [ ] Multiple tables locked in ID-sorted order? |
| - [ ] Existing `tryLock(timeout)` patterns preserved, not replaced with unbounded blocking? |
| - [ ] No database/catalog locks taken inside broad `synchronized` blocks or async callbacks? |
| - [ ] Shared `Map`/`List` traversals protected by locking, snapshots, or concurrent containers against `ConcurrentModificationException`? |
| |
| ## Exceptions |
| |
| - [ ] FE-common `AnalysisException` (checked) vs Nereids' `AnalysisException` (unchecked) distinguished correctly? |
| - [ ] User-visible errors use `ErrorReport`/`ErrorCode` with custom codes starting at 5000? |
| - [ ] RPC boundaries convert to `TStatusCode`/`PStatus`, not leaking Java exceptions? |
| |
| ## Visible Version |
| |
| - [ ] `OlapTable.getVisibleVersion()` respects cloud/non-cloud split: local in shared-nothing, RPC+TTL cache in cloud? |
| - [ ] Cloud `VERSION_NOT_FOUND` normalized to `PARTITION_INIT_VERSION` — "missing" and version 1 intentionally indistinguishable? |