@@ -97,9 +97,12 @@ public void AdvanceTime()
9797 [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
9898 public void OnRead ( TimeOrderNode < K , V > node )
9999 {
100- var currentExpiry = node . TimeToExpire - current ;
101- node . TimeToExpire = current + expiryCalculator . GetExpireAfterRead ( node . Key , node . Value , currentExpiry ) ;
102- wheel . Reschedule ( node ) ;
100+ var oldTte = node . TimeToExpire ;
101+ node . TimeToExpire = current + expiryCalculator . GetExpireAfterRead ( node . Key , node . Value , node . TimeToExpire - current ) ;
102+ if ( oldTte . raw != node . TimeToExpire . raw )
103+ {
104+ wheel . Reschedule ( node ) ;
105+ }
103106 }
104107
105108 [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
@@ -113,9 +116,12 @@ public void OnWrite(TimeOrderNode<K, V> node)
113116 }
114117 else
115118 {
116- var currentExpiry = node . TimeToExpire - current ;
117- node . TimeToExpire = current + expiryCalculator . GetExpireAfterUpdate ( node . Key , node . Value , currentExpiry ) ;
118- wheel . Reschedule ( node ) ;
119+ var oldTte = node . TimeToExpire ;
120+ node . TimeToExpire = current + expiryCalculator . GetExpireAfterUpdate ( node . Key , node . Value , node . TimeToExpire - current ) ;
121+ if ( oldTte . raw != node . TimeToExpire . raw )
122+ {
123+ wheel . Reschedule ( node ) ;
124+ }
119125 }
120126 }
121127
0 commit comments