Skip to content

Conversation

dlmarion
Copy link
Collaborator

Modified Qonduit server to optionally serve up split
information for user tables. When enabled the SplitStore
component in the Qonduit server will periodically get
the splits for user tables and store them in RFiles on
local disk (location can be configured).

Users can use the WebSocketClient object
to connect to the Qonduit server and send
SplitLookupRequest objects over the connection.
On the server side, the request is routed to the
SplitLookupOperation class where the row is
searched in the split file for the table. The operation
returns a SplitLookupResponse object back to
the user.

Included several IT changes, including an IT that
shows how to wire everything together.

@dlmarion dlmarion self-assigned this May 14, 2025
writer.append(key, encodedPrev);
}
LOG.debug("Splits file {} complete for {}", tableSplitsFile, tableName);
SPLIT_FILES.computeIfAbsent(tableName, (t) -> new AtomicReference<Path>()).set(tableSplitsFile);
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking I should remove the old file here. Might be safer to perform the check in SplitLookupOperation and delete the file if the RFile that was just read from is not the current reference.

Text prevRow = TabletColumnFamily.decodePrevEndRow(entry.getValue());
response.setBeginRow(prevRow == null ? "null" : prevRow.toString());
response.setEndRow(endRow == null ? "null" : endRow.toString());
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could call server.getSplitStore().getSplitsFileForTable(tableName) after this, and if not equal to splitsFile, then remove splitsFile as the file we just read from is no longer the current file. If old file is not read from for a long time, then it could lead to a bunch of files piling up on disk.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant