diff --git a/iot_verifier/src/rewarder.rs b/iot_verifier/src/rewarder.rs index 4c78d7e3b..7061fd1df 100644 --- a/iot_verifier/src/rewarder.rs +++ b/iot_verifier/src/rewarder.rs @@ -89,27 +89,9 @@ impl Rewarder { // Await the returned oneshot to ensure we wrote the file .await??; - let written_files = self.rewards_sink.commit().await?.await??; - // Write the rewards manifest for the completed period - self.reward_manifests_sink - .write( - RewardManifest { - start_timestamp: scheduler.reward_period.start.encode_timestamp(), - end_timestamp: scheduler.reward_period.end.encode_timestamp(), - written_files, - }, - [], - ) - .await? - .await??; - - self.reward_manifests_sink.commit().await?; - let mut transaction = self.pool.begin().await?; - // Clear gateway shares table period to end of reward period GatewayShares::clear_rewarded_shares(&mut transaction, scheduler.reward_period.end).await?; - save_rewarded_timestamp( "last_rewarded_end_time", &scheduler.reward_period.end, @@ -122,9 +104,24 @@ impl Rewarder { &mut transaction, ) .await?; - transaction.commit().await?; + // now that the db has been purged, safe to commit the rewards related sinks + let written_files = self.rewards_sink.commit().await?.await??; + // Write the rewards manifest for the completed period + self.reward_manifests_sink + .write( + RewardManifest { + start_timestamp: scheduler.reward_period.start.encode_timestamp(), + end_timestamp: scheduler.reward_period.end.encode_timestamp(), + written_files, + }, + [], + ) + .await? + .await??; + self.reward_manifests_sink.commit().await?; + Ok(()) } }