@@ -117,20 +117,22 @@ func coalesceUpdates[K comparable, V any](runner string, updates []watchable.Upd
117117 result := make ([]watchable.Update [K , V ], 0 , len (updates ))
118118 indexByKey := make (map [K ]int , len (updates ))
119119
120- for _ , update := range updates {
121- if idx , ok := indexByKey [update .Key ]; ok {
122- // Keep the latest update for this key.
123- result [idx ] = update
120+ for i := len (updates ) - 1 ; i >= 0 ; i -- {
121+ update := updates [i ]
122+ if _ , ok := indexByKey [update .Key ]; ok {
124123 continue
125124 }
126125
127126 indexByKey [update .Key ] = len (result )
128127 result = append (result , update )
129128 }
130129
131- if len (result ) != len (updates ) {
132- logger .WithValues ("runner" , runner ).Info ("coalesced updates" , "count" , len (result ), "before" , len (updates ))
130+ // Reverse the result slice to restore the original order of the last updates for each key
131+ for left , right := 0 , len (result )- 1 ; left < right ; left , right = left + 1 , right - 1 {
132+ result [left ], result [right ] = result [right ], result [left ]
133133 }
134134
135+ logger .WithValues ("runner" , runner ).Info ("coalesced updates" , "count" , len (result ), "before" , len (updates ))
136+
135137 return result
136138}
0 commit comments