4paradigm / 4paradigm/OpenMLDB
`CallProcedure` request may not be routed to the best tablet when `partitionnum` > 1
- Vorherrschende Sprache
- C++
- Sterne
- 1.7k
- Forks
- 331
- Ø Merge
- 12 T. 12 Std.
- Gemergte PRs (30 T.)
- 1
Beschreibung
**Bug Description**
When the `partitionnum` of a table is > 1, `CallProcedure` request is routed to a random tablet.
Current logic is:
`pid = rand_.Uniform(pid_num);`
The result is wrong but we may have to fetch data from remote tablet to the routed tablet.
**Expected Behavior**
`CallProcedure` request should be routed to the tablet based on the pk.
**Steps to Reproduce**
1. `SQLSDKQueryTest.RequestProcedureTest`: change create statement with `options(partitionnum=8)`
2. will generate a proxy task
Beitragsleitfaden
Rechercherichtung
The issue points to a routing logic in the code where `pid = rand_.Uniform(pid_num);` is used. Look for the `CallProcedure` request handling and the tablet routing logic. The test `SQLSDKQueryTest.RequestProcedureTest` needs to be modified to use `options(partitionnum=8)` to reproduce. Understanding the partitioning and primary key (pk) based routing is key. Check how other requests route based on pk to see the pattern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- sql
- Bereich
- backend, databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 45/100