FineAndDandy opened a new issue, #3217:
URL: https://github.com/apache/accumulo/issues/3217
**Describe the bug**
Tablet.needsSplit() calls Tablet.findSplitRow(...) which may call
FileUtil.findMidPoint(). This call is potentially very expensive, and due to
Tablet.needsSplit() being synchronized may block what should be short
operations.
**Versions (OS, Maven, Java, and others, as appropriate):**
- Affected version(s) of this project: 1.x, 2.x
**To Reproduce**
Steps to reproduce the behavior (or a link to an example repository that
reproduces the problem):
1. Suspend idle compactions
2. Set the compaction threshold very high
3. Create a very large tablet
4. Drop the split threshold below the tablet size
7. Attempt to bulk load a file into the tablet
8. Observe the bulk load to timeout as a split point is computed
**Expected behavior**
Because the tablet is over the estimated size, the bulkLoad should return
quickly and trigger TabletServer.executeSplit(...) which should do the actual
computation of the split point and all validation rather than the needsSplit().
**Additional context**
There is some state that is computed/held in the tablet when the splitPoint
is calculated that either has to be moved or added another way.
--
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]