Skip to content

Commit 3eb7879

Browse files
committed
f manually cas-loop
1 parent 4067756 commit 3eb7879

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

lightning/src/chain/chainmonitor.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,14 @@ where C::Target: chain::Filter,
261261
{
262262
let mut dependent_txdata = Vec::new();
263263
if let Some(height) = best_height {
264-
self.highest_chain_height.fetch_max(height as usize, Ordering::AcqRel);
264+
// Sadly AtomicUsize::fetch_max wasn't stabilized until 1.45, so until then we have to
265+
// manually CAS.
266+
let mut old_height = self.highest_chain_height.fetch(Ordering::Relaxed);
267+
while self.highest_chain_height
268+
.compare_exchange(old_height, height as usize, Ordering::AcqRel, Ordering::Relaxed).is_err()
269+
{
270+
old_height = self.highest_chain_height.fetch(Ordering::Acquire);
271+
}
265272
}
266273
{
267274
let monitor_states = self.monitors.write().unwrap();

0 commit comments

Comments
 (0)