### _Why are the changes needed?_ For the operation getNextRowSet method, we shall add lock for it. For example, for spark operation, the result iterator is not thread-safe, it might throw exception(if the jdbc client to kyuubi server connection socket timeout). For incremental collect mode, the fetchResult might trigger a spark task to collect the incremental result(`self.next().toIterator`). The jdbc client to kyuubi gateway timeout, but the fetchResult request has been sent to engine. Then the jdbc client re-send the fetchResult request. And the getNextResultSet in spark engine side concurrent execute. And the result iterator is not thread-safe and might cause NPE.   ### _How was this patch tested?_ - [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible - [ ] Add screenshots for manual tests if appropriate - [x] [Run test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests) locally before make a pull request Closes #4949 from turboFei/lock_next_rowset. Closes #4949 8f18f3236 [fwang12] getNextRowSetInternal and withLockRequired Authored-by: fwang12 <fwang12@ebay.com> Signed-off-by: fwang12 <fwang12@ebay.com> |
||
|---|---|---|
| .. | ||
| src | ||
| pom.xml | ||