@@ -144,8 +144,8 @@ func (m *Manager) WaitForNoVersion(
144
144
return nil
145
145
}
146
146
147
- // maybeGetDescriptorsWithoutValidation gets a descriptor without validating
148
- // from the KV layer.
147
+ // maybeGetDescriptorsWithoutValidation gets descriptors without validating from
148
+ // the KV layer.
149
149
func (m * Manager ) maybeGetDescriptorsWithoutValidation (
150
150
ctx context.Context , ids descpb.IDs , existenceExpected bool ,
151
151
) (catalog.Descriptors , error ) {
@@ -158,6 +158,7 @@ func (m *Manager) maybeGetDescriptorsWithoutValidation(
158
158
if err != nil {
159
159
return err
160
160
}
161
+
161
162
for _ , id := range ids {
162
163
desc := c .LookupDescriptor (id )
163
164
if desc == nil {
@@ -177,6 +178,19 @@ func (m *Manager) maybeGetDescriptorsWithoutValidation(
177
178
return descs , nil
178
179
}
179
180
181
+ // maybeGetDescriptorWithoutValidation gets a descriptor without validating
182
+ // from the KV layer.
183
+ func (m * Manager ) maybeGetDescriptorWithoutValidation (
184
+ ctx context.Context , id descpb.ID , existenceExpected bool ,
185
+ ) (catalog.Descriptor , error ) {
186
+ descArr , err := m .maybeGetDescriptorsWithoutValidation (ctx , descpb.IDs {id }, existenceExpected )
187
+ if err != nil {
188
+ return nil , err
189
+ }
190
+
191
+ return descArr [0 ], nil
192
+ }
193
+
180
194
// countDescriptorsHeldBySessionIDs can be used to make sure certain nodes
181
195
// (sessions) observe the existence of a given set of descriptors. Assuming the given
182
196
// sessions are still alive.
@@ -453,27 +467,28 @@ func (m *Manager) WaitForInitialVersion(
453
467
// invariant that no new leases for desc.Version-1 will be granted once
454
468
// desc.Version exists.
455
469
//
456
- // If the descriptor is not found, an error will be returned. The error
457
- // can be detected by using errors.Is(err, catalog.ErrDescriptorNotFound).
470
+ // If the descriptor is not found, an error will be returned.
458
471
func (m * Manager ) WaitForOneVersion (
459
472
ctx context.Context ,
460
473
id descpb.ID ,
461
474
regions regionliveness.CachedDatabaseRegions ,
462
475
retryOpts retry.Options ,
463
- ) (desc catalog.Descriptor , _ error ) {
476
+ ) (catalog.Descriptor , error ) {
464
477
// Increment the long wait gauge for wait for one version, if this function
465
478
// takes longer than the lease duration.
466
479
decAfterWait := m .IncGaugeAfterLeaseDuration (GaugeWaitForOneVersion )
467
480
defer decAfterWait ()
468
481
wsTracker := startWaitStatsTracker (ctx )
469
482
defer wsTracker .end ()
483
+
484
+ var desc catalog.Descriptor
470
485
for lastCount , r := 0 , retry .Start (retryOpts ); r .Next (); {
471
486
var err error
472
- var descArr catalog. Descriptors
473
- if descArr , err = m . maybeGetDescriptorsWithoutValidation ( ctx , descpb. IDs { id }, true ); err != nil {
487
+ desc , err = m . maybeGetDescriptorWithoutValidation ( ctx , id , true )
488
+ if err != nil {
474
489
return nil , err
475
490
}
476
- desc = descArr [ 0 ]
491
+
477
492
// Check to see if there are any leases that still exist on the previous
478
493
// version of the descriptor.
479
494
now := m .storage .clock .Now ()
@@ -492,6 +507,7 @@ func (m *Manager) WaitForOneVersion(
492
507
log .Infof (ctx , "waiting for %d leases to expire: desc=%v" , detail .count , descs )
493
508
}
494
509
}
510
+
495
511
return desc , nil
496
512
}
497
513
0 commit comments