Skip to content

Commit 6aecd28

Browse files
committed
event reporter working
1 parent df6e98d commit 6aecd28

File tree

4 files changed

+29
-15
lines changed

4 files changed

+29
-15
lines changed

internal/verifier/check.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ func (verifier *Verifier) CheckDriver(ctx context.Context, filter map[string]any
157157
verifier.phase = Idle
158158
}()
159159

160+
// A “throwaway” EventRecorder so that any change events that arrive
161+
// right away will have somewhere to be recorded.
162+
verifier.generationEventRecorder = NewEventRecorder()
163+
160164
verifier.mux.RLock()
161165
csRunning := verifier.changeStreamRunning
162166
verifier.mux.RUnlock()

internal/verifier/recheck.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55

66
"github.com/10gen/migration-verifier/internal/types"
7+
"github.com/pkg/errors"
78
"go.mongodb.org/mongo-driver/bson"
89
"go.mongodb.org/mongo-driver/mongo"
910
"go.mongodb.org/mongo-driver/mongo/options"
@@ -34,7 +35,11 @@ type RecheckDoc struct {
3435
func (verifier *Verifier) InsertFailedCompareRecheckDocs(
3536
namespace string, documentIDs []interface{}, dataSizes []int) error {
3637
dbName, collName := SplitNamespace(namespace)
37-
return verifier.insertRecheckDocs(context.Background(),
38+
39+
verifier.mux.Lock()
40+
defer verifier.mux.Unlock()
41+
42+
return verifier.insertRecheckDocsUnderLock(context.Background(),
3843
dbName, collName, documentIDs, dataSizes)
3944
}
4045

@@ -48,15 +53,20 @@ func (verifier *Verifier) InsertChangeEventRecheckDoc(ctx context.Context, chang
4853
// total data size for noninitial generations in the log.
4954
dataSizes := []int{maxBSONObjSize}
5055

51-
return verifier.insertRecheckDocs(
56+
verifier.mux.Lock()
57+
defer verifier.mux.Unlock()
58+
59+
if err := verifier.generationEventRecorder.AddEvent(changeEvent); err != nil {
60+
return errors.Wrapf(err, "failed to augment stats with change event: %+v", *changeEvent)
61+
}
62+
63+
return verifier.insertRecheckDocsUnderLock(
5264
ctx, changeEvent.Ns.DB, changeEvent.Ns.Coll, documentIDs, dataSizes)
5365
}
5466

55-
func (verifier *Verifier) insertRecheckDocs(
67+
func (verifier *Verifier) insertRecheckDocsUnderLock(
5668
ctx context.Context,
5769
dbName, collName string, documentIDs []interface{}, dataSizes []int) error {
58-
verifier.mux.Lock()
59-
defer verifier.mux.Unlock()
6070

6171
generation, _ := verifier.getGenerationWhileLocked()
6272

internal/verifier/recheck_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (suite *MultiMetaVersionTestSuite) TestLargeIDInsertions() {
9595
id3 := strings.Repeat("c", overlyLarge)
9696
ids := []interface{}{id1, id2, id3}
9797
dataSizes := []int{overlyLarge, overlyLarge, overlyLarge}
98-
err := verifier.insertRecheckDocs(ctx, "testDB", "testColl", ids, dataSizes)
98+
err := verifier.insertRecheckDocsUnderLock(ctx, "testDB", "testColl", ids, dataSizes)
9999
suite.Require().NoError(err)
100100

101101
d1 := RecheckDoc{
@@ -156,7 +156,7 @@ func (suite *MultiMetaVersionTestSuite) TestLargeDataInsertions() {
156156
id3 := "c"
157157
ids := []interface{}{id1, id2, id3}
158158
dataSizes := []int{400 * 1024, 700 * 1024, 1024}
159-
err := verifier.insertRecheckDocs(ctx, "testDB", "testColl", ids, dataSizes)
159+
err := verifier.insertRecheckDocsUnderLock(ctx, "testDB", "testColl", ids, dataSizes)
160160
suite.Require().NoError(err)
161161
d1 := RecheckDoc{
162162
PrimaryKey: RecheckPrimaryKey{
@@ -217,13 +217,13 @@ func (suite *MultiMetaVersionTestSuite) TestMultipleNamespaces() {
217217
id3 := "c"
218218
ids := []interface{}{id1, id2, id3}
219219
dataSizes := []int{1000, 1000, 1000}
220-
err := verifier.insertRecheckDocs(ctx, "testDB1", "testColl1", ids, dataSizes)
220+
err := verifier.insertRecheckDocsUnderLock(ctx, "testDB1", "testColl1", ids, dataSizes)
221221
suite.Require().NoError(err)
222-
err = verifier.insertRecheckDocs(ctx, "testDB1", "testColl2", ids, dataSizes)
222+
err = verifier.insertRecheckDocsUnderLock(ctx, "testDB1", "testColl2", ids, dataSizes)
223223
suite.Require().NoError(err)
224-
err = verifier.insertRecheckDocs(ctx, "testDB2", "testColl1", ids, dataSizes)
224+
err = verifier.insertRecheckDocsUnderLock(ctx, "testDB2", "testColl1", ids, dataSizes)
225225
suite.Require().NoError(err)
226-
err = verifier.insertRecheckDocs(ctx, "testDB2", "testColl2", ids, dataSizes)
226+
err = verifier.insertRecheckDocsUnderLock(ctx, "testDB2", "testColl2", ids, dataSizes)
227227
suite.Require().NoError(err)
228228

229229
verifier.generation++
@@ -267,17 +267,17 @@ func (suite *MultiMetaVersionTestSuite) TestGenerationalClear() {
267267
id2 := "b"
268268
ids := []interface{}{id1, id2}
269269
dataSizes := []int{1000, 1000}
270-
err := verifier.insertRecheckDocs(ctx, "testDB", "testColl", ids, dataSizes)
270+
err := verifier.insertRecheckDocsUnderLock(ctx, "testDB", "testColl", ids, dataSizes)
271271
suite.Require().NoError(err)
272272

273273
verifier.generation++
274274

275-
err = verifier.insertRecheckDocs(ctx, "testDB", "testColl", ids, dataSizes)
275+
err = verifier.insertRecheckDocsUnderLock(ctx, "testDB", "testColl", ids, dataSizes)
276276
suite.Require().NoError(err)
277277

278278
verifier.generation++
279279

280-
err = verifier.insertRecheckDocs(ctx, "testDB", "testColl", ids, dataSizes)
280+
err = verifier.insertRecheckDocsUnderLock(ctx, "testDB", "testColl", ids, dataSizes)
281281
suite.Require().NoError(err)
282282

283283
d1 := RecheckDoc{

internal/verifier/summary.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ func (verifier *Verifier) printChangeEventStatistics(builder *strings.Builder) {
395395
sort.Slice(
396396
reverseSortedNamespaces,
397397
func(i, j int) bool {
398-
return reverseSortedNamespaces[i] > reverseSortedNamespaces[j]
398+
return nsTotals[reverseSortedNamespaces[i]] > nsTotals[reverseSortedNamespaces[j]]
399399
},
400400
)
401401

0 commit comments

Comments
 (0)