Skip to content
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

[Backport release-2.18] Convert C API interface functions to CAPI_INTERFACE #4471

Merged
merged 5 commits into from
Nov 1, 2023

Conversation

github-actions[bot]
Copy link
Contributor

Backport aede0f1~5..aede0f1 from #4460.

teo-tsirpanis and others added 5 commits October 31, 2023 11:47
* When `vfs.gcs.use_multi_part_upload` is disabled, there is a maximum
possible size of objects we can write. This size used to be the same
with multi-part uploads (`vfs.gcs.max_parallel_ops` *
`vfs.gcs.multi_part_size`), and this PR introduces a dedicated config
option for that (`vfs.gcs_max_direct_upload_size`, defaulting to 10
GiB).
* If this limit is exceeded, we now print a more explanatory message
that directs the user which config option to change.

[SC-27746](https://app.shortcut.com/tiledb-inc/story/27746/gcs-write-failure-when-multipart-is-disabled)

---
TYPE: IMPROVEMENT
DESC: Improve experience when performing too large GCS direct uploads.

TYPE: CONFIG
DESC: Add vfs.gcs.max_direct_upload_size config option.
(cherry picked from commit 589f0b6)
…#3763)

Refactor `tiledb/c_api/tiledb_filestore.cc` so that it uses only internal API calls, as opposed to the C++ external API calls.

---
TYPE: IMPROVEMENT
DESC: Refactor filestore API so that it uses internal TileDB library
calls.

---------

Co-authored-by: Luc Rancourt <[email protected]>
(cherry picked from commit 29a9244)
As @snagles reported, the group metadata seems to be written correctly,
but it's empty when you try to read it.
I managed to reproduce it locally by opening a TileDB Cloud group, then
created a test for it by serializing-deserializing a group with metadata
locally.
The serialization code is calling `Group::metadata()` to get the md
object, but the `Metadata` content is not brought up from disk, so the
group looks like it has no metadata. `Group::load_metadata` needs to be
called to make sure we serialize a synced version of `Metadata`.

---
TYPE: BUG
DESC: Group metadata doesn't get serialized

---------

Co-authored-by: KiterLuc <[email protected]>
(cherry picked from commit 71a2cc4)
Currently, Win32 error messages are retrieved using the `FormatMessageA`
API, which returns them in ANSI encoding. This results in corrupted
error messages when the computer's language is other than English.

With this PR, we use `FormatMessageW` which returns the message in
UTF-16 encoding, which then gets converted to UTF-8 and stored in the
encoding-agnostic `std::string`.

__Before__

![image](https://user-images.githubusercontent.com/12659251/226977534-68f56838-6e9c-4e04-92ce-ae0824ef7c56.png)

__After__

![image](https://user-images.githubusercontent.com/12659251/226977191-6c024bc4-99c3-4d91-b28b-5a3407038da4.png)

__After, if the console's output mode is set to UTF-8__

![image](https://user-images.githubusercontent.com/12659251/226976565-6f0670f7-9f4b-4cd0-ab53-b542f79522cf.png)

The C# API (at least, don't know about the others) needs to be updated
to support incoming UTF-8 strings from the Core.

IIRC, POSIX works in UTF-8 by default so it doesn't need any changes,
right?

[SC-26131](https://app.shortcut.com/tiledb-inc/story/26131/win32-vfs-error-messages-in-greek-are-corrupted)

---
TYPE: IMPROVEMENT
DESC: Encode Win32 error messages in UTF-8.

---------

Co-authored-by: KiterLuc <[email protected]>
(cherry picked from commit b8ec44f)
Convert C API interface functions to use `CAPI_INTERFACE`. This
completes the work in #4430.

There are a very small number of functions not converted. One is not in
the C API (i.e. it doesn't have `extern "C"` linkage), but is used by
the C++ API, and on top of that it's for a deprecated operation. The
others are small, informational functions that do return values directly
and do not use `capi_return_t`.

---
TYPE: NO_HISTORY
DESC: Convert C API interface functions to CAPI_INTERFACE

(cherry picked from commit aede0f1)
@eric-hughes-tiledb eric-hughes-tiledb self-requested a review October 31, 2023 13:18
@KiterLuc KiterLuc closed this Oct 31, 2023
@KiterLuc KiterLuc reopened this Oct 31, 2023
@KiterLuc KiterLuc merged commit da64629 into release-2.18 Nov 1, 2023
51 checks passed
@KiterLuc KiterLuc deleted the backport-4460-to-release-2.18 branch November 1, 2023 14:51
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.

5 participants