Recommended usage of get_range_split_points or GetRangeSplitPoints


I am experimenting with the Go bindings GetRangeSplitPoints (which wraps C.fdb_transaction_get_range_split_points ) and couldn’t figure out the expected usage pattern. I tried to get a range split across the entire db (’’ to xFF) and the call seems to take a while (i killed after a minute on each try). DB is about 10G with sample/placeholder data. I tried various chunkSize-s , 100k, 1mb, 1g, 10g and was expecting, probably naively, to get a range slice with which i can later query using GetRange() without hitting the 5 second timeout. For my tests though, even 10 minutes is a perfectly valid if that is what it takes to get the ranges. I let it ran for 2 hrs and then a traceback showed that it is waiting on a future that is never resolved

What is the ideal/appropriate use of this method?

I understand the data retrieved this way would be inconsistent since it spans many transaction, but at this point, I am merely experimenting with APIs to understand what is possible.



You might be running into getRangeSplitPoints is missing from FuzzApiCorrectness · Issue #4167 · apple/foundationdb · GitHub. You can work around this by using the locality api get_boundary_keys function. (there should be an equivalent in go)