-
Notifications
You must be signed in to change notification settings - Fork 1.8k
fix(NODE-5745): Ignore Read/Write Concern in Atlas Search Index Helpers #4042
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
Merged
nbbeeken
merged 21 commits into
main
from
NODE-5745/avoid-wr-append-in-atlas-search-index-helper
Apr 11, 2024
Merged
Changes from all commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
7d510a3
synced tests
aditi-khare-mongoDB a1160e2
changed error message
aditi-khare-mongoDB d1ba807
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB 7aa7c86
explicitly remove readConcern and writeConcern from ListSearchIndex h…
aditi-khare-mongoDB 3c8fd8b
added documentation and explicit removal of write/readConcern in list…
aditi-khare-mongoDB dd4179d
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB 27c38dd
added in custom transaction unified test
aditi-khare-mongoDB a82af7e
Rename search-index-management-with-transaction.json to searchIndexIg…
aditi-khare-mongoDB 7cc6072
lint fix and requested changes
aditi-khare-mongoDB 59ed066
omit readconcern and writeConcern
aditi-khare-mongoDB 0504cad
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB e2a863f
temporary transaction tests
aditi-khare-mongoDB d7340a3
added ttests to skip in NODE-6047
aditi-khare-mongoDB e5cf60e
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB fa9d356
flipped assertions and fixed test logic
aditi-khare-mongoDB f00e3df
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB 9111fdc
fixed error assertions
aditi-khare-mongoDB 79600b0
removed extraneous test - not relevant anymore
aditi-khare-mongoDB 259863a
update ListSearchIndexOptions
aditi-khare-mongoDB 515bf74
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
aditi-khare-mongoDB 8eb289c
Merge branch 'main' into NODE-5745/avoid-wr-append-in-atlas-search-in…
nbbeeken File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
68 changes: 68 additions & 0 deletions
68
test/integration/index-management/search-index-management.test.ts
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
import { expect } from 'chai'; | ||
|
||
import { type Collection, type CommandStartedEvent, type MongoClient } from '../../mongodb'; | ||
|
||
describe('Search Index Management Integration Tests', function () { | ||
describe('read concern and write concern ', function () { | ||
let client: MongoClient; | ||
let collection: Collection; | ||
let commandStartedEvents: CommandStartedEvent[]; | ||
|
||
beforeEach(async function () { | ||
client = this.configuration.newClient({}, { monitorCommands: true }); | ||
await client.connect(); | ||
collection = client.db('client').collection('searchIndexManagement'); | ||
commandStartedEvents = []; | ||
client.on('commandStarted', e => commandStartedEvents.push(e)); | ||
}); | ||
|
||
afterEach(async function () { | ||
await client.close(); | ||
}); | ||
|
||
context('when listSearchIndexes operation is run with causalConsistency', function () { | ||
it('should not include write concern or read concern in command', { | ||
metadata: { | ||
requires: { | ||
topology: '!single', | ||
mongodb: '>=7.0', | ||
serverless: 'forbid' | ||
} | ||
}, | ||
test: async function () { | ||
await client.withSession({ causalConsistency: true }, async session => { | ||
const res = collection.listSearchIndexes({ session }); | ||
await res.toArray().catch(e => expect(e.errmsg).to.match(/^.*Atlas.*$/)); | ||
expect(commandStartedEvents[0]).to.exist; | ||
expect(commandStartedEvents[0]?.command?.readConcern).to.not.exist; | ||
expect(commandStartedEvents[0]?.command?.writeConcern).to.not.exist; | ||
}); | ||
} | ||
}); | ||
}); | ||
|
||
context('when listSearchIndexes operation is run with snapshot on', function () { | ||
// TODO(NODE-6047): Ignore read/write concern in applySession for Atlas Search Index Helpers | ||
it('should include write concern or read concern in command - TODO(NODE-6047)', { | ||
metadata: { | ||
requires: { | ||
topology: ['replicaset', 'sharded'], | ||
mongodb: '>=7.0', | ||
serverless: 'forbid' | ||
} | ||
}, | ||
test: async function () { | ||
await client.withSession({ snapshot: true }, async session => { | ||
const res = collection.listSearchIndexes({ session }); | ||
const error = await res.toArray().catch(e => e); | ||
expect(error.errmsg).to.match(/^.*snapshot.*$/); | ||
expect(commandStartedEvents[0]).to.exist; | ||
// flip assertion after NODE-6047 implementation | ||
expect(commandStartedEvents[0]?.command?.readConcern).to.exist; | ||
expect(commandStartedEvents[0]?.command?.writeConcern).to.not.exist; | ||
}); | ||
} | ||
}); | ||
}); | ||
}); | ||
}); |
252 changes: 252 additions & 0 deletions
252
test/spec/index-management/searchIndexIgnoresReadWriteConcern.json
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,252 @@ | ||
{ | ||
"description": "search index operations ignore read and write concern", | ||
"schemaVersion": "1.4", | ||
"createEntities": [ | ||
{ | ||
"client": { | ||
"id": "client0", | ||
"useMultipleMongoses": false, | ||
"uriOptions": { | ||
"readConcernLevel": "local", | ||
"w": 1 | ||
}, | ||
"observeEvents": [ | ||
"commandStartedEvent" | ||
] | ||
} | ||
}, | ||
{ | ||
"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": "createSearchIndex ignores read and write concern", | ||
"operations": [ | ||
{ | ||
"name": "createSearchIndex", | ||
"object": "collection0", | ||
"arguments": { | ||
"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": "createSearchIndexes ignores read and write concern", | ||
"operations": [ | ||
{ | ||
"name": "createSearchIndexes", | ||
"object": "collection0", | ||
"arguments": { | ||
"models": [] | ||
}, | ||
"expectError": { | ||
"isError": true, | ||
"errorContains": "Atlas" | ||
} | ||
} | ||
], | ||
"expectEvents": [ | ||
{ | ||
"client": "client0", | ||
"events": [ | ||
{ | ||
"commandStartedEvent": { | ||
"command": { | ||
"createSearchIndexes": "collection0", | ||
"indexes": [], | ||
"$db": "database0", | ||
"writeConcern": { | ||
"$$exists": false | ||
}, | ||
"readConcern": { | ||
"$$exists": false | ||
} | ||
} | ||
} | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
{ | ||
"description": "dropSearchIndex ignores read and write concern", | ||
"operations": [ | ||
{ | ||
"name": "dropSearchIndex", | ||
"object": "collection0", | ||
"arguments": { | ||
"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": "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": "updateSearchIndex ignores the read and write concern", | ||
"operations": [ | ||
{ | ||
"name": "updateSearchIndex", | ||
"object": "collection0", | ||
"arguments": { | ||
"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 | ||
} | ||
} | ||
} | ||
} | ||
] | ||
} | ||
] | ||
} | ||
] | ||
} |
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.
Uh oh!
There was an error while loading. Please reload this page.