-
Notifications
You must be signed in to change notification settings - Fork 179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for remote global order writes #3393
Merged
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit
Hold shift + click to select a range
4f12a05
basic code skeleton for serialized global order writes
robertbindar 54cf7ca
serialize fields of GlobalWriteState
robertbindar fab314e
deserialization of global write state
robertbindar 4aa7442
global write state serialization
robertbindar 64ef300
working round-trip - single submit, draft test case
robertbindar 5896b74
multiple submits, working version
robertbindar 1271bf4
extend testcase for nullable and varsize attributes, fix bugs
robertbindar a4840c0
Get extra coverage by switching all existing
robertbindar 4d2cb3b
fix uninitialized field in SingleCoord constructor
robertbindar d29873c
Fix bad initialization of nonempty domain for sparse during deseriali…
robertbindar 2ad5946
tile alignment restrictions for remote global order writes
robertbindar 7889bb2
tile alignment restriction should be waived for submit_and_finalize r…
robertbindar e5f43a8
regular finalize() call should fail for remote global order writes
robertbindar 31dc09a
rest client submit_and_finalize
robertbindar ad0c092
remove irelevant todo comments
robertbindar c839a8a
capnp spec extension for multipart uploads
robertbindar e915548
multipart upload support for global order writes - part1
robertbindar 1db21c4
multipart upload support for global order writes - part2
robertbindar baaf528
multipart upload support for global order writes - part3
robertbindar 530906d
fix rebasing compile issues
robertbindar 15101ed
fix bug in query deserialization
robertbindar ebaabf9
fix rest client deserialization exception
robertbindar af3f6bb
Query submit should flush the s3 file buffers
robertbindar 2f608ca
Serialize has_delete_meta_ field as part of fragment_metadata
ypatia b870493
subarray boundary checking should happen after the subarray is deseri…
robertbindar a1af43c
Serialization should clear S3 multipart uploads
robertbindar 8f457ba
fix check_tile_alignment
ypatia e4d09f6
return a client error if input buffers are <5mb as a temporary limita…
robertbindar 322adaa
enable serialized global order write tests
robertbindar 9d878e1
serialization support for WrittenFragmentInfo, fix failing test
robertbindar a56acaf
build failure when serialization is disabled
robertbindar 71c3194
fix CI build failure
robertbindar c5c0e82
fix wrong last tile boundary calculation in test case
robertbindar 8676cf9
Fix bug in Query for sparse.
robertbindar e7c3b64
CI should be green - part1
robertbindar c984e58
Fix bug in unit-cppapi-var-offsets heap buffer overflow
robertbindar aa4d062
CI should be green - part2
robertbindar 32f1f10
flush_multipart_file_buffer should be noop for not supported backends
robertbindar 0e84ee2
disable serialization wrappers for 32bit offsets gl.o.writes
robertbindar 70bd8b6
Disable temporarily serial wrappers for 32-bit dense writes too
ypatia f9f280e
fix test failure
robertbindar 8534fa7
Flushing of multipart buffers should only happen
robertbindar 1d98417
win32 capnp headers
robertbindar 66b2aca
ifdef serialization in unit-capi-dense_array
robertbindar 9c43ab6
further fixes in unit-capi-dense_array
robertbindar 4254658
revert incorrect change in unit-capi_dense_array
robertbindar 0bf5bd9
one more unit-capi_dense_array fix
robertbindar bdcb0b0
add inline comments in the capnp global order writes structures
robertbindar 8d51519
add V1 naming to writer globalWriteState capnp member
robertbindar File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -759,6 +759,67 @@ std::string get_commit_dir(std::string array_dir); | |
template <class T> | ||
void check_counts(span<T> vals, std::vector<uint64_t> expected); | ||
|
||
/** | ||
* Helper function that serializes a query from the "client" or "server" | ||
* perspective. The flow being mimicked here is (for read queries): | ||
* | ||
* - Client sets up read query object including buffers. | ||
* - Client submits query to a remote array. | ||
* - Internal code (not C API) serializes that query and send it via curl. | ||
* - Server receives and deserializes the query using the C API. | ||
* - Server submits query. | ||
* - Server serializes (using C API) the query and sends it back. | ||
* - Client receives response and deserializes the query (not C API). This | ||
* copies the query results into the original user buffers. | ||
* - Client's blocking call to tiledb_query_submit() now returns. | ||
*/ | ||
void serialize_query( | ||
const Context& ctx, | ||
Query& query, | ||
std::vector<uint8_t>* serialized, | ||
bool clientside); | ||
|
||
/** | ||
* Helper function that deserializes a query from the "client" or "server" | ||
* perspective. | ||
*/ | ||
void deserialize_query( | ||
const Context& ctx, | ||
std::vector<uint8_t>& serialized, | ||
Query* query, | ||
bool clientside); | ||
|
||
int serialize_query( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Doxygen doc. |
||
tiledb_ctx_t* ctx, | ||
tiledb_query_t* query, | ||
std::vector<uint8_t>* serialized, | ||
bool clientside); | ||
|
||
int deserialize_query( | ||
tiledb_ctx_t* ctx, | ||
std::vector<uint8_t>& serialized, | ||
tiledb_query_t* query, | ||
bool clientside); | ||
|
||
void submit_serialized_query(tiledb_ctx_t* ctx, tiledb_query_t* query); | ||
|
||
void submit_serialized_query(const Context& ctx, Query& query); | ||
|
||
void finalize_serialized_query(tiledb_ctx_t* ctx, tiledb_query_t* query); | ||
|
||
void finalize_serialized_query(const Context& ctx, Query& query); | ||
|
||
void submit_and_finalize_serialized_query( | ||
tiledb_ctx_t* ctx, tiledb_query_t* query); | ||
|
||
void submit_and_finalize_serialized_query(const Context& ctx, Query& query); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. NIT: line break between function and doc for the next. |
||
/** | ||
* Helper function that allocates buffers on a query object that has been | ||
* deserialized on the "server" side. | ||
*/ | ||
std::vector<void*> allocate_query_buffers( | ||
const Context& ctx, const Array& array, Query* query); | ||
|
||
} // End of namespace test | ||
|
||
} // End of namespace tiledb | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these just moving of the code in test/src/unit-capi-serialized_queries.cc?