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

fix(NODE-5745): Ignore Read/Write Concern in Atlas Search Index Helpers #4042

Merged
merged 21 commits into from
Apr 11, 2024
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
7d510a3
synced tests
aditi-khare-mongoDB Mar 15, 2024
a1160e2
changed error message
aditi-khare-mongoDB Mar 19, 2024
d1ba807
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB Mar 19, 2024
7aa7c86
explicitly remove readConcern and writeConcern from ListSearchIndex h…
aditi-khare-mongoDB Mar 19, 2024
3c8fd8b
added documentation and explicit removal of write/readConcern in list…
aditi-khare-mongoDB Mar 19, 2024
dd4179d
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB Mar 19, 2024
27c38dd
added in custom transaction unified test
aditi-khare-mongoDB Mar 20, 2024
a82af7e
Rename search-index-management-with-transaction.json to searchIndexIg…
aditi-khare-mongoDB Mar 20, 2024
7cc6072
lint fix and requested changes
aditi-khare-mongoDB Mar 20, 2024
59ed066
omit readconcern and writeConcern
aditi-khare-mongoDB Mar 20, 2024
0504cad
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB Mar 20, 2024
e2a863f
temporary transaction tests
aditi-khare-mongoDB Mar 25, 2024
d7340a3
added ttests to skip in NODE-6047
aditi-khare-mongoDB Mar 25, 2024
e5cf60e
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB Apr 5, 2024
fa9d356
flipped assertions and fixed test logic
aditi-khare-mongoDB Apr 5, 2024
f00e3df
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB Apr 5, 2024
9111fdc
fixed error assertions
aditi-khare-mongoDB Apr 5, 2024
79600b0
removed extraneous test - not relevant anymore
aditi-khare-mongoDB Apr 5, 2024
259863a
update ListSearchIndexOptions
aditi-khare-mongoDB Apr 10, 2024
515bf74
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB Apr 10, 2024
8eb289c
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
nbbeeken Apr 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions src/collection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1056,7 +1056,9 @@ export class Collection<TSchema extends Document = Document> {
*
* @remarks Only available when used against a 7.0+ Atlas cluster.
*/
listSearchIndexes(options?: ListSearchIndexesOptions): ListSearchIndexesCursor;
listSearchIndexes(
options?: Omit<ListSearchIndexesOptions, 'readConcern' | 'writeConcern'>
nbbeeken marked this conversation as resolved.
Show resolved Hide resolved
): ListSearchIndexesCursor;
/**
* Returns all search indexes for the current collection.
*
Expand All @@ -1065,13 +1067,17 @@ export class Collection<TSchema extends Document = Document> {
*
* @remarks Only available when used against a 7.0+ Atlas cluster.
*/
listSearchIndexes(name: string, options?: ListSearchIndexesOptions): ListSearchIndexesCursor;
listSearchIndexes(
name: string,
options?: Omit<ListSearchIndexesOptions, 'readConcern' | 'writeConcern'>
): ListSearchIndexesCursor;
listSearchIndexes(
indexNameOrOptions?: string | ListSearchIndexesOptions,
options?: ListSearchIndexesOptions
options?: Omit<ListSearchIndexesOptions, 'readConcern' | 'writeConcern'>
): ListSearchIndexesCursor {
options =
typeof indexNameOrOptions === 'object' ? indexNameOrOptions : options == null ? {} : options;

const indexName =
indexNameOrOptions == null
? null
Expand Down
nbbeeken marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
{
"description": "when in a transaction, search index operations ignore read and write concern",
"schemaVersion": "1.4",
"createEntities": [
{
"client": {
"id": "client0",
"useMultipleMongoses": false,
"uriOptions": {
"readConcernLevel": "local",
"w": 1
},
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"session": {
"id": "session0",
"client": "client0"
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "database0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "collection0"
}
}
],
"runOnRequirements": [
{
"minServerVersion": "7.0.0",
"topologies": [
"replicaset",
"load-balanced",
"sharded"
],
"serverless": "forbid"
}
],
"tests": [
{
"description": "when in a transaction, createSearchIndex ignores read and write concern",
"operations": [
{
"name": "createSearchIndex",
"object": "collection0",
"arguments": {
"session": "session0",
"model": {
"definition": {
"mappings": {
"dynamic": true
}
}
}
},
"expectError": {
"isError": true,
"errorContains": "Atlas"
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"createSearchIndexes": "collection0",
"indexes": [
{
"definition": {
"mappings": {
"dynamic": true
}
}
}
],
"$db": "database0",
"writeConcern": {
"$$exists": false
},
"readConcern": {
"$$exists": false
}
}
}
}
]
}
]
},
{
"description": "when in a transaction, createSearchIndexes ignores read and write concern",
"operations": [
{
"name": "createSearchIndexes",
"object": "collection0",
"arguments": {
"session": "session0",
"models": []
},
"expectError": {
"isError": true,
"errorContains": "Atlas"
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"createSearchIndexes": "collection0",
"indexes": [],
"$db": "database0",
"writeConcern": {
"$$exists": false
},
"readConcern": {
"$$exists": false
}
}
}
}
]
}
]
},
{
"description": "when in a transaction, dropSearchIndex ignores read and write concern",
"operations": [
{
"name": "dropSearchIndex",
"object": "collection0",
"arguments": {
"session": "session0",
"name": "test index"
},
"expectError": {
"isError": true,
"errorContains": "Atlas"
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"dropSearchIndex": "collection0",
"name": "test index",
"$db": "database0",
"writeConcern": {
"$$exists": false
},
"readConcern": {
"$$exists": false
}
}
}
}
]
}
]
},
{
"description": "when in a transaction, listSearchIndexes ignores read and write concern",
"operations": [
{
"name": "listSearchIndexes",
"object": "collection0",
"expectError": {
"isError": true,
"errorContains": "Atlas"
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"aggregate": "collection0",
"pipeline": [
{
"$listSearchIndexes": {}
}
],
"writeConcern": {
"$$exists": false
},
"readConcern": {
"$$exists": false
}
}
}
}
]
}
]
},
{
"description": "when in a transaction, updateSearchIndex ignores the read and write concern",
"operations": [
{
"name": "updateSearchIndex",
"object": "collection0",
"arguments": {
"session": "session0",
"name": "test index",
"definition": {}
},
"expectError": {
"isError": true,
"errorContains": "Atlas"
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"updateSearchIndex": "collection0",
"name": "test index",
"definition": {},
"$db": "database0",
"writeConcern": {
"$$exists": false
},
"readConcern": {
"$$exists": false
}
}
}
}
]
}
]
}
]
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { loadSpecTests } from '../../spec';
import { runUnifiedSuite } from '../../tools/unified-spec-runner/runner';

describe('Search Index Management Tests (Node Specific)', function () {
runUnifiedSuite(loadSpecTests('../integration/index-management/node-specific'));
});
Loading
Loading