RDBC-1085 Check whether the client node converts values in the request to PascalCase when they should not be in PascalCase.#561
Merged
Conversation
The client mangled the casing of certificate permission keys, which are
database names, on both the write and read paths:
- Write: the command-payload serializer PascalCases the first letter of every
object key, so a permission map like {"myDb": ...} was sent as {"MyDb": ...}.
- Read: the certificate read operations deep-camelCase every response key, so
{"UPPER_db": ...} was read back as {"uPPER_db": ...}.
Because the server matches permission keys case-sensitively, either transform
broke the alignment between a certificate's permissions and the database name.
Write path (Create/Put/Edit client certificate): serialize the payload with the
casing-preserving serializer and already-PascalCased field names, mirroring the
C# client which writes each permission key verbatim.
Read path (Get certificate / certificates, metadata and full definition): all
four operations now camelCase the response through a shared transform that
ignores the `permissions` map keys, mirroring the existing
GetDatabaseRecordOperation handling of arbitrary-keyed maps. The ignore path
matches everything under `permissions` so database names containing '.' are
also preserved. Factored into a shared constant so the four operations can't
drift.
kalczur
approved these changes
Jul 9, 2026
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Issue link
https://issues.hibernatingrhinos.com/issue/RDBC-1085
Additional description
The command-payload serializer PascalCases the first letter of every object key, including the keys of the certificate
permissionsmap, which are database names. A lowercase name like "lowercase_db" was sent as "Lowercase_db", and since the server matches permission keys case-sensitively, restored permissions no longer lined up with the database name.Mirror the C# client, which writes these bodies with PascalCased field names but emits each permission key verbatim: serialize Create/Put/Edit client certificate payloads with the casing-preserving serializer and supply already-PascalCased field names.
Type of change
How risky is the change?
Backward compatibility
Is it platform specific issue?
Documentation update
Documentation Requiredtag.Testing by Contributor
private)Testing by RavenDB QA team
QA Requiredtag.Is there any existing behavior change of other features due to this change?
UI work
Studio Requiredtag.