Skip to content

Commit fdd97de

Browse files
committed
Re-send messages in critical path to other nodes
1 parent eafd4e5 commit fdd97de

42 files changed

Lines changed: 190 additions & 218 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pkg/accountability/simpleacc/accountability.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ func NewReconfigurableModule(mc ModuleConfig, paramsTemplate ModuleParams, logge
125125
// Fill in instance-specific parameters.
126126
moduleParams := paramsTemplate
127127
moduleParams.Membership = accParams.Membership
128+
moduleParams.RetentionIndex = accParams.RetentionIndex
128129

129130
// Create a new instance of the multisig collector.
130131
accountabilityModule, err := NewModule(

pkg/accountability/simpleacc/common/common.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"github.com/filecoin-project/mir/pkg/logging"
77
accpbtypes "github.com/filecoin-project/mir/pkg/pb/accountabilitypb/types"
88
trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types"
9+
timertypes "github.com/filecoin-project/mir/pkg/timer/types"
10+
tt "github.com/filecoin-project/mir/pkg/trantor/types"
911
t "github.com/filecoin-project/mir/pkg/types"
1012
)
1113

@@ -17,15 +19,18 @@ type ModuleConfig struct {
1719
Ordering t.ModuleID // provides Predecisions
1820
App t.ModuleID // receives Decisions and/or PoMs
1921
Crypto t.ModuleID // provides cryptographic primitives
22+
Timer t.ModuleID // provides Timing primitives
2023
Net t.ModuleID // provides network primitives
2124
}
2225

2326
// ModuleParams sets the values for the parameters of an instance of the protocol.
2427
// All replicas are expected to use identical module parameters.
2528
type ModuleParams struct {
26-
Membership *trantorpbtypes.Membership // the list of participating nodes
29+
Membership *trantorpbtypes.Membership // The list of participating nodes.
2730
LightCertificates bool
28-
PomsHandler func(m dsl.Module, // function to be called when PoMs detected
31+
ResendFrequency timertypes.Duration // Frequency with which messages in the critical path are re-sent
32+
RetentionIndex tt.RetentionIndex
33+
PoMsHandler func(m dsl.Module, // Function to be called when PoMs detected.
2934
mc *ModuleConfig,
3035
params *ModuleParams,
3136
state *incommon.State,

pkg/accountability/simpleacc/internal/poms/poms.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func HandlePoMs(
9393
logger.Log(logging.LevelWarn, "Found valid PoMs! sending...")
9494

9595
// Handle PoMs according to the application's logic defined when creating the accountability factory
96-
params.PomsHandler(m, mc, params, state, state.UnhandledPoMs, logger)
96+
params.PoMsHandler(m, mc, params, state, state.UnhandledPoMs, logger)
9797

9898
for _, pom := range state.UnhandledPoMs {
9999
state.HandledPoMs[pom.NodeId] = pom

pkg/accountability/simpleacc/internal/predecisions/predecisions.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package predecisions
22

33
import (
4+
eventpbdsl "github.com/filecoin-project/mir/pkg/pb/eventpb/dsl"
5+
eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types"
46
"reflect"
57

68
"github.com/filecoin-project/mir/pkg/accountability/simpleacc/internal/certificates/lightcertificates"
@@ -19,6 +21,7 @@ import (
1921
cryptopbdsl "github.com/filecoin-project/mir/pkg/pb/cryptopb/dsl"
2022
cryptopbtypes "github.com/filecoin-project/mir/pkg/pb/cryptopb/types"
2123
transportpbdsl "github.com/filecoin-project/mir/pkg/pb/transportpb/dsl"
24+
transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events"
2225
t "github.com/filecoin-project/mir/pkg/types"
2326
"github.com/filecoin-project/mir/pkg/util/maputil"
2427
"github.com/filecoin-project/mir/pkg/util/membutil"
@@ -79,7 +82,13 @@ func IncludePredecisions(
7982
state.LocalPredecision.SignedPredecision.Signature = signature
8083

8184
// Broadcast signed predecision to all participants (including oneself).
82-
transportpbdsl.SendMessage(m, mc.Net, accpbmsgs.SignedPredecision(mc.Self, sr.data, signature), maputil.GetKeys(params.Membership.Nodes))
85+
eventpbdsl.TimerRepeat(m,
86+
mc.Timer,
87+
[]*eventpbtypes.Event{transportpbevents.SendMessage(mc.Net, accpbmsgs.SignedPredecision(mc.Self, sr.data, signature), maputil.GetKeys(params.Membership.Nodes))},
88+
params.ResendFrequency,
89+
params.RetentionIndex,
90+
)
91+
8392
return nil
8493
})
8594

@@ -230,13 +239,16 @@ func decide(m dsl.Module, mc *common.ModuleConfig, params *common.ModuleParams,
230239
}
231240

232241
// Find the actual predecision from other nodes
233-
transportpbdsl.SendMessage(
234-
m,
235-
mc.Net,
236-
accpbmsgs.RequestSBMessage(mc.Self,
237-
predecision),
238-
state.PredecisionNodeIDs[string(predecision)])
239-
242+
eventpbdsl.TimerRepeat(m,
243+
mc.Timer,
244+
[]*eventpbtypes.Event{transportpbevents.SendMessage(
245+
mc.Net,
246+
accpbmsgs.RequestSBMessage(mc.Self,
247+
predecision),
248+
state.PredecisionNodeIDs[string(predecision)])},
249+
params.ResendFrequency,
250+
params.RetentionIndex,
251+
)
240252
}
241253

242254
func finishWithDecision(

pkg/modules/mockmodules/internal/mock_internal/impl.mock.go

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/net/grpc/grpctransport.pb.go

Lines changed: 3 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/net/grpc/grpctransport_grpc.pb.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/pb/accountabilitypb/accountabilitypb.pb.go

Lines changed: 38 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/pb/accountabilitypb/types/types.mir.go

Lines changed: 9 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/pb/apppb/apppb.pb.go

Lines changed: 4 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)