From 1cc64f245b6d9f44d6430953197335215ccdac66 Mon Sep 17 00:00:00 2001
From: James Walker <walkah@walkah.net>
Date: Wed, 9 Oct 2024 17:16:35 -0400
Subject: [PATCH] fix: re-register resource offers after runJob (#396)

* fix: re-register resource offers after runJob

* chore: go mod tidy
---
 go.mod                             |  2 +-
 go.sum                             |  4 ++--
 pkg/resourceprovider/controller.go | 17 ++++++++++++++---
 3 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/go.mod b/go.mod
index 9cc91c49..00d86328 100644
--- a/go.mod
+++ b/go.mod
@@ -114,7 +114,7 @@ require (
 	github.com/klauspost/cpuid/v2 v2.2.8 // indirect
 	github.com/libp2p/go-buffer-pool v0.1.0 // indirect
 	github.com/libp2p/go-cidranger v1.1.0 // indirect
-	github.com/libp2p/go-libp2p v0.36.5 // indirect
+	github.com/libp2p/go-libp2p v0.36.4 // indirect
 	github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
 	github.com/libp2p/go-libp2p-kad-dht v0.26.1 // indirect
 	github.com/libp2p/go-libp2p-kbucket v0.6.3 // indirect
diff --git a/go.sum b/go.sum
index 10ca69ba..c3b83096 100644
--- a/go.sum
+++ b/go.sum
@@ -532,8 +532,8 @@ github.com/libp2p/go-doh-resolver v0.4.0 h1:gUBa1f1XsPwtpE1du0O+nnZCUqtG7oYi7Bb+
 github.com/libp2p/go-doh-resolver v0.4.0/go.mod h1:v1/jwsFusgsWIGX/c6vCRrnJ60x7bhTiq/fs2qt0cAg=
 github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM=
 github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro=
-github.com/libp2p/go-libp2p v0.36.5 h1:DoABsaHO0VXwH6pwCs2F6XKAXWYjFMO4HFBoVxTnF9g=
-github.com/libp2p/go-libp2p v0.36.5/go.mod h1:CpszAtXxHYOcyvB7K8rSHgnNlh21eKjYbEfLoMerbEI=
+github.com/libp2p/go-libp2p v0.36.4 h1:ZaKyKSHBFbzs6CnAYMhaMc5QgV1UoCN+9WXrg8SEwI4=
+github.com/libp2p/go-libp2p v0.36.4/go.mod h1:4Y5vFyCUiJuluEPmpnKYf6WFx5ViKPUYs/ixe9ANFZ8=
 github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
 github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
 github.com/libp2p/go-libp2p-kad-dht v0.26.1 h1:AazV3LCImYVkDUGAHx5lIEgZ9iUI2QQKH5GMRQU8uEA=
diff --git a/pkg/resourceprovider/controller.go b/pkg/resourceprovider/controller.go
index 7c2fd119..ac010331 100644
--- a/pkg/resourceprovider/controller.go
+++ b/pkg/resourceprovider/controller.go
@@ -163,7 +163,7 @@ func (controller *ResourceProviderController) Start(ctx context.Context, cm *sys
 		ctx,
 		CONTROL_LOOP_INTERVAL,
 		func() error {
-			err := controller.ensureResourceOffers()
+			err := controller.checkResourceoffers()
 			if err != nil {
 				errorChan <- err
 			}
@@ -248,12 +248,22 @@ func (controller *ResourceProviderController) getResourceOffer(index int, spec d
 	}
 }
 
-func (controller *ResourceProviderController) ensureResourceOffers() error {
+func (controller *ResourceProviderController) checkResourceoffers() error {
 	// We only want to run this every RESOURCE_OFFER_INTERVAL
 	if !lastResourceOfferPost.IsZero() && time.Since(lastResourceOfferPost) < RESOURCE_OFFER_INTERVAL {
 		return nil
 	}
 
+	err := controller.ensureResourceOffers()
+	if err != nil {
+		return err
+	}
+
+	lastResourceOfferPost = time.Now()
+	return nil
+}
+
+func (controller *ResourceProviderController) ensureResourceOffers() error {
 	// load the resource offers that are currently active and so should not be replaced
 	activeResourceOffers, err := controller.solverClient.GetResourceOffers(store.GetResourceOffersQuery{
 		ResourceProvider: controller.web3SDK.GetAddress().String(),
@@ -302,7 +312,6 @@ func (controller *ResourceProviderController) ensureResourceOffers() error {
 		}
 	}
 
-	lastResourceOfferPost = time.Now()
 	return err
 }
 
@@ -546,5 +555,7 @@ func (controller *ResourceProviderController) runJob(ctx context.Context, deal d
 	}
 	span.AddEvent("solver.transaction_hash.added")
 
+	controller.ensureResourceOffers()
+
 	span.AddEvent("done")
 }