Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Kudu caches the scanner id in the tablet server for continuing reading. It will be expired if the idle time is over the defined scanner ttl time. Sometimes the client reads a batch of data, if the data is every large, it takes a long time to handle it. Then the client reads the next batch using the same scanner, the scanner will be expired even if it has send a keep alive requests.
There is an example:
/main/logs/sp/kudu/tserver/3.kudu.log.INFO.20230731-143052.2665:I0731 14:57:19.307266 9280 scanners.cc:280] Expiring scanner id: a279f6e3715d437d935d0bd79788c591, of tablet 0f8f4920ba514624abc294c7c64725c1, after 184023 ms of inactivity, which is > TTL (180000 ms).
/main/logs/sp/kudu/tserver/kudu.log.INFO.20230731-143052.2665:I0731 15:03:07.419070 9289 tablet_service.cc:2957] Scan: Not found: Scanner a279f6e3715d437d935d0bd79788c591 not found (it may have expired): call sequence id=10, remote={username='impala'} at host:26278
The client takes 9 minutes to handle a batch of data, but the scanner has already been expired.
Attachments
Issue Links
- causes
-
KUDU-3567 Resource leakage related to HashedWheelTimer in AsyncKuduScanner
- Open