diff --git a/docs/pages/release_notes.rst b/docs/pages/release_notes.rst index 3cf3241194..74de0f81f8 100644 --- a/docs/pages/release_notes.rst +++ b/docs/pages/release_notes.rst @@ -3,6 +3,16 @@ Release notes ############# +************************ +Hazelnut update (v5.2.3) +************************ + +Release date: 2023-06-13 + +- Fixed issue where a Reprocess failed due to missing data + +**Full Changelog**: https://github.com/nuts-foundation/nuts-node/compare/v5.2.2...v5.2.3 + ************************ Hazelnut update (v5.2.2) ************************ @@ -40,6 +50,16 @@ Release date: 2023-04-25 **Full Changelog**: https://github.com/nuts-foundation/nuts-node/compare/v5.1.0...v5.2.0 +************************ +Hazelnut update (v5.1.2) +************************ + +Release date: 2023-06-13 + +- Fixed issue where a Reprocess failed due to missing data + +**Full Changelog**: https://github.com/nuts-foundation/nuts-node/compare/v5.1.1...v5.1.2 + ************************ Hazelnut update (v5.1.1) ************************ diff --git a/network/network.go b/network/network.go index fd2a3e8ae8..452317b741 100644 --- a/network/network.go +++ b/network/network.go @@ -740,8 +740,8 @@ func (n *Network) Reprocess(ctx context.Context, contentType string) (*Reprocess // add to Nats subject := fmt.Sprintf("%s.%s", events.ReprocessStream, contentType) payload, err := n.state.ReadPayload(ctx, tx.PayloadHash()) - if err != nil { - return nil, fmt.Errorf("reprocess abort on transaction %#x payload %#x: %w", tx.Ref(), tx.PayloadHash(), err) + if err != nil && !errors.Is(err, dag.ErrPayloadNotFound) { + return nil, fmt.Errorf("reprocess abort on transaction %s payload %s: %w", tx.Ref(), tx.PayloadHash(), err) } twp := events.TransactionWithPayload{ Transaction: tx, @@ -754,7 +754,7 @@ func (n *Network) Reprocess(ctx context.Context, contentType string) (*Reprocess Trace("Publishing transaction") _, err = js.PublishAsync(subject, data) if err != nil { - return nil, fmt.Errorf("reprocess abort on transaction %#x publish: %w", tx.Ref(), err) + return nil, fmt.Errorf("reprocess abort on transaction %s publish: %w", tx.Ref(), err) } } diff --git a/network/network_test.go b/network/network_test.go index e1a4c3f0ef..3c4450c17f 100644 --- a/network/network_test.go +++ b/network/network_test.go @@ -782,6 +782,25 @@ func TestNetwork_Reprocess(t *testing.T) { assert.Equal(t, 0, counter) }) + t.Run("missing payload", func(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + setup, eventManager := newSetup(t) + setup.state.EXPECT().FindBetweenLC(gomock.Any(), uint32(0), uint32(1000)).Return([]dag.Transaction{tx}, nil) + setup.state.EXPECT().ReadPayload(gomock.Any(), tx.PayloadHash()).Return(nil, dag.ErrPayloadNotFound) + var counter int + wg := sync.WaitGroup{} + wg.Add(1) + + subscribe(ctx, t, eventManager, &wg, &counter) + + _, err := setup.network.Reprocess(ctx, "application/did+json") + require.NoError(t, err) + wg.Wait() + assert.Equal(t, 1, counter) + }) + t.Run("error", func(t *testing.T) { t.Run("query", func(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), time.Second)