Skip to content

RDBC-1098 - Port 7.2.3 -> 7.2.5 - #574

Open
M4xymm wants to merge 18 commits into
ravendb:v7.2from
M4xymm:RDBC-1098
Open

RDBC-1098 - Port 7.2.3 -> 7.2.5#574
M4xymm wants to merge 18 commits into
ravendb:v7.2from
M4xymm:RDBC-1098

Conversation

@M4xymm

@M4xymm M4xymm commented Aug 20, 2026

Copy link
Copy Markdown
Member

Issue link

https://issues.hibernatingrhinos.com/issue/RDBC-1098

Additional description

  • Bumped client version to 7.2.7, updated client wire version to 7.2.5
  • Added CDC Sink support: configuration types, Add/Update operations, wiring into ongoing tasks, database record and smuggler types
  • Added Snowflake ETL configuration and connection string types
  • Added new queue brokers: Azure Service Bus, Azure Queue Storage and Amazon SQS; fixed QueueSink mentorNode field name
  • Added AiOperations.getConversationMessages with conversation message types; returns null result for a missing conversation
  • Added server-wide connection string operations
  • Added pull replication cursors to database record types
  • Added SSO certificate metadata and SSO/disabled parameters to EditClientCertificateOperation
  • Added disableChecksumValidation to S3 settings
  • Fixed connection string names to keep original casing in GetConnectionStringsOperation and database record responses
  • Exported new public API and added CDC Sink and conversation messages sections to README
  • Ported client-side tests from RavenDB 7.2.5 test patch; added tests for CDC Sink CRUD, Azure Service Bus sink source, conversation messages and time series no-op delete
  • Documented new CDC Sink task ID after update

Type of change

  • Bug fix
  • Regression bug fix
  • Optimization
  • New feature

How risky is the change?

  • Low
  • Moderate
  • High
  • Not relevant

Backward compatibility

  • Non breaking change
  • Ensured. Please explain how has it been implemented?
  • Breaking change
  • Not relevant

Is it platform specific issue?

  • Yes. Please list the affected platforms.
  • No

Documentation update

  • This change requires a documentation update. Please mark the issue on YouTrack using Documentation Required tag.
  • No documentation update is needed

Testing by Contributor

  • Tests have been added that prove the fix is effective or that the feature works
  • Internal classes added to the test class (e.g. entity or index definition classes) have the lowest possible access modifier (preferable private)
  • It has been verified by manual testing
  • Existing tests verify the correct behavior

Testing by RavenDB QA team

  • This change requires a special QA testing due to possible performance or resources usage implications (CPU, memory, IO). Please mark the issue on YouTrack using QA Required tag.
  • No special testing by RavenDB QA team is needed

Is there any existing behavior change of other features due to this change?

  • Yes. Please list the affected features/subsystems and provide appropriate explanation
  • No

UI work

  • It requires further work in the Studio. Please mark the issue on YouTrack using Studio Required tag.
  • No UI work is needed

M4xymm added 16 commits August 5, 2026 16:18
…ueue brokers, fix QueueSink mentorNode field name
…cord and smuggler types, add pull replication cursors
… conversation messages and time series no-op delete
…ionStringsOperation and database record responses
Ports the client-visible tests from the C# 7.2.5 test patch:

- RavenDB_14311: invalid RQL with extra parentheses reports a syntax
  error instead of a NullReferenceException; valid search() still works
- RavenDB_26935: non-ASCII term truncation on a Lucene index
- RavenDB_26921: prefix/suffix search operator on static and dynamic
  (createField) index fields
- RavenDB_24423: Bengali strings sorted with AlphaNumeric ordering
- TimeSeriesStatsUpdate: deleting a range of a non-existing time series
  is a no-op

The remaining tests in the patch exercise server internals (CDC sink,
task errors storage, replication change-vector gating, Voron, Corax
pipeline, revision PK hashing, sharding, PostgreSQL integration, SNMP)
and have no Node.js client counterpart.
…lity:

- Conditional test skips for features requiring RavenDB 7.2+.
- Handle null bodyStreams in `GetOngoingTaskInfoOperation`.
- Upgrade dependencies (`package-lock.json`) to version 7.2.7.
@M4xymm M4xymm self-assigned this Aug 20, 2026
@M4xymm M4xymm changed the title Rdbc 1098 RDBC-1098 - Port 7.2.3 -> 7.2.5 Aug 20, 2026
- Default forcePathStyle and disableChecksumValidation to false so RemoteAttachmentsS3Settings always serializes both booleans, matching the C# ToJson wire format
- Use explicit != null checks for the opt-in SSO fields in EditClientCertificateOperation and type the payload as Record<string, unknown>
- Build the GetServerWideConnectionStrings query string with URLSearchParams
- Point-free map and inferred return type for serializeSnowflakeEtlTable
@M4xymm
M4xymm requested a review from kalczur August 26, 2026 11:48
this._thumbprint = parameters.thumbprint;
this._permissions = parameters.permissions;
this._clearance = parameters.clearance;
this._disabled = !!parameters.disabled;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Do we want treat disabled undefined as false here? It's different for allowAnySsoServer

private readonly _connectionString: T;

/**
* @param connectionString - The connection string to remove. Only the name property is required.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

What about connectionString.type? It is used in createRequest

.objectKeysTransform({
defaultTransform: ObjectUtil.camel,
ignorePaths: [
/^\w+ConnectionStrings\.[^.]+$/i

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

It can't match a name with a dot in it, so My.App.Raven comes back as my.App.Raven

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Please check other [^.]+$ matches in project

for (const item of raw.results ?? []) {
// Each entry is the underlying connection string's fields flattened to the top level,
// plus type and excludedDatabases (matches the C# ServerWideConnectionString wire format).
const { excludedDatabases, usedBy, ...connectionStringFields } = item;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Shouldn't it return usedBy? IIRC we are returning this for server-wide cs in server/studio.

Comment on lines +91 to +93
const operation = typeof conversationIdOrParameters === "string"
? new GetConversationMessagesOperation(conversationIdOrParameters)
: new GetConversationMessagesOperation(conversationIdOrParameters);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Both branches are equal

uriParams.append("after", DateUtil.utc.stringify(this._parameters.after));
}

uriParams.append("pageSize", (this._parameters.pageSize ?? 2_147_483_647).toString());

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

IIRC the server default is int.MaxValue, so just omit it when it isn't defined

Comment thread README.md
console.log(result.taskId); // the ID of the created ongoing task
```

#### Update a CDC Sink task

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

What about server-wide connection strings, Snowflake ETL, the three new queue brokers and SSO certificate params?

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.

2 participants