Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
Signed-off-by: MyonKeminta <[email protected]>
  • Loading branch information
MyonKeminta committed Mar 6, 2025
1 parent ed52c48 commit e027343
Show file tree
Hide file tree
Showing 3 changed files with 487 additions and 78 deletions.
9 changes: 4 additions & 5 deletions pkg/gc/safepoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,20 +151,20 @@ func (m *GCStateManager) advanceGCSafePointImpl(keyspaceID uint32, target uint64
return
}

func (m *GCStateManager) AdvanceTxnSafePoint(keyspaceID uint32, target uint64) (AdvanceTxnSafePointResult, error) {
func (m *GCStateManager) AdvanceTxnSafePoint(keyspaceID uint32, target uint64, now time.Time) (AdvanceTxnSafePointResult, error) {
keyspaceID, err := m.redirectKeyspace(keyspaceID, false)
if err != nil {
return AdvanceTxnSafePointResult{}, err
}
m.lock.Lock()
m.lock.Unlock()

return m.advanceTxnSafePointImpl(keyspaceID, target)
return m.advanceTxnSafePointImpl(keyspaceID, target, now)
}

// advanceTxnSafePointImpl is the internal implementation of AdvanceTxnSafePoint, assuming keyspaceID has been checked
// and the mutex has been acquired.
func (m *GCStateManager) advanceTxnSafePointImpl(keyspaceID uint32, target uint64) (AdvanceTxnSafePointResult, error) {
func (m *GCStateManager) advanceTxnSafePointImpl(keyspaceID uint32, target uint64, now time.Time) (AdvanceTxnSafePointResult, error) {
isCompatibleMode := false

// A helper function for handling the compatibility of the service safe point of "gc_worker", which is needed
Expand Down Expand Up @@ -204,7 +204,6 @@ func (m *GCStateManager) advanceTxnSafePointImpl(keyspaceID uint32, target uint6
return err1
}

now := time.Now()
for _, barrier := range barriers {
if barrier.BarrierID == keypath.GCWorkerServiceSafePointID {
err1 = keepGCWorkerServiceSafePointCompatible(wb, barrier)
Expand Down Expand Up @@ -503,7 +502,7 @@ func (m *GCStateManager) CompatibleUpdateServiceGCSafePoint(serviceID string, ne
return nil, false, errors.New("TTL of gc_worker's service safe point must be infinity")
}

res, err := m.advanceTxnSafePointImpl(keyspaceID, newServiceSafePoint)
res, err := m.advanceTxnSafePointImpl(keyspaceID, newServiceSafePoint, now)
if err != nil {
return nil, false, err
}
Expand Down
Loading

0 comments on commit e027343

Please sign in to comment.