|
6 | 6 | "math/big" |
7 | 7 | "time" |
8 | 8 |
|
| 9 | + "github.com/ethereum/go-ethereum/accounts/abi/bind" |
9 | 10 | "github.com/ethereum/go-ethereum/common" |
10 | 11 | "github.com/ethereum/go-ethereum/core/types" |
11 | 12 | "github.com/ethereum/go-ethereum/ethclient" |
@@ -46,6 +47,32 @@ func (t *TerminateServiceTask) Do(taskID harmonytask.TaskID, stillOwned func() b |
46 | 47 | return false, xerrors.Errorf("failed to select data set: %w", err) |
47 | 48 | } |
48 | 49 |
|
| 50 | + sAddr := contract.ContractAddresses().AllowedPublicRecordKeepers.FWSService |
| 51 | + fwssv, err := FWSS.NewFilecoinWarmStorageServiceStateView(sAddr, t.ethClient) |
| 52 | + if err != nil { |
| 53 | + return false, xerrors.Errorf("failed to instantiate FWSS service state view: %w", err) |
| 54 | + } |
| 55 | + |
| 56 | + ds, err := fwssv.GetDataSet(&bind.CallOpts{Context: ctx}, big.NewInt(dataSetId)) |
| 57 | + if err != nil { |
| 58 | + return false, xerrors.Errorf("failed to get data set %d: %w", dataSetId, err) |
| 59 | + } |
| 60 | + |
| 61 | + if ds.PdpEndEpoch.Int64() != 0 { |
| 62 | + n, err := t.db.Exec(ctx, `UPDATE pdp_delete_data_set |
| 63 | + SET after_terminate_service = TRUE, |
| 64 | + terminate_service_task_id = NULL, |
| 65 | + termination_epoch = $2 |
| 66 | + WHERE terminate_service_task_id = $1`, taskID, ds.PdpEndEpoch.Int64()) |
| 67 | + if err != nil { |
| 68 | + return false, xerrors.Errorf("failed to update pdp_delete_data_set: %w", err) |
| 69 | + } |
| 70 | + |
| 71 | + if n != 1 { |
| 72 | + return false, xerrors.Errorf("expected to update 1 row but got %d", n) |
| 73 | + } |
| 74 | + } |
| 75 | + |
49 | 76 | sender, err := getPDPOwner(ctx, t.db) |
50 | 77 | if err != nil { |
51 | 78 | return false, xerrors.Errorf("failed to get pdp owner: %w", err) |
|
0 commit comments