Skip to content

Commit 53b4b92

Browse files
authored
Revert "[ISSUE 246] DST: Fault Injection (#248)" (#251)
This reverts commit 60bda4a.
1 parent 60bda4a commit 53b4b92

File tree

3 files changed

+24
-64
lines changed

3 files changed

+24
-64
lines changed

cmd/dst/run.go

+11-13
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,16 @@ import (
2626

2727
func RunDSTCmd() *cobra.Command {
2828
var (
29-
seed int64
30-
ticks int64
31-
reqsPerTick = util.RangeIntFlag{Min: 1, Max: 1000}
32-
ids = util.RangeIntFlag{Min: 1, Max: 1000}
33-
idempotencyKeys = util.RangeIntFlag{Min: 1, Max: 1000}
34-
headers = util.RangeIntFlag{Min: 1, Max: 1000}
35-
data = util.RangeIntFlag{Min: 1, Max: 1000}
36-
tags = util.RangeIntFlag{Min: 1, Max: 1000}
37-
urls = util.RangeIntFlag{Min: 1, Max: 1000}
38-
retries = util.RangeIntFlag{Min: 1, Max: 1000}
39-
failureProbability float64
29+
seed int64
30+
ticks int64
31+
reqsPerTick = util.RangeIntFlag{Min: 1, Max: 1000}
32+
ids = util.RangeIntFlag{Min: 1, Max: 1000}
33+
idempotencyKeys = util.RangeIntFlag{Min: 1, Max: 1000}
34+
headers = util.RangeIntFlag{Min: 1, Max: 1000}
35+
data = util.RangeIntFlag{Min: 1, Max: 1000}
36+
tags = util.RangeIntFlag{Min: 1, Max: 1000}
37+
urls = util.RangeIntFlag{Min: 1, Max: 1000}
38+
retries = util.RangeIntFlag{Min: 1, Max: 1000}
4039
)
4140

4241
cmd := &cobra.Command{
@@ -85,7 +84,7 @@ func RunDSTCmd() *cobra.Command {
8584

8685
// instatiate api/aio
8786
api := api.New(config.API.Size, metrics)
88-
aio := aio.NewDST(r, metrics, failureProbability)
87+
aio := aio.NewDST(r, metrics)
8988

9089
// instatiate aio subsystems
9190
network := network.NewDST(config.AIO.Subsystems.NetworkDST.Config, rand.New(rand.NewSource(r.Int63())))
@@ -207,7 +206,6 @@ func RunDSTCmd() *cobra.Command {
207206
cmd.Flags().Var(&tags, "tags", "number promise tags")
208207
cmd.Flags().Var(&urls, "urls", "number subscription urls")
209208
cmd.Flags().Var(&retries, "retries", "number subscription retries")
210-
cmd.Flags().Float64Var(&failureProbability, "failure-probability", 0.5, "probability of aio failure")
211209

212210
// api
213211
cmd.Flags().Var(&util.RangeIntFlag{Min: 1, Max: 1000000}, "api-size", "size of the submission queue buffered channel")

internal/aio/aio_dst.go

+12-49
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"log/slog"
66
"math/rand" // nosemgrep
77

8-
"github.com/resonatehq/resonate/internal/kernel/metadata"
98
"github.com/resonatehq/resonate/internal/kernel/t_aio"
109
"github.com/resonatehq/resonate/internal/metrics"
1110

@@ -14,20 +13,18 @@ import (
1413
)
1514

1615
type aioDST struct {
17-
r *rand.Rand
18-
sqes []*bus.SQE[t_aio.Submission, t_aio.Completion]
19-
cqes []*bus.CQE[t_aio.Submission, t_aio.Completion]
20-
subsystems map[t_aio.Kind]Subsystem
21-
metrics *metrics.Metrics
22-
failureProbability float64
16+
r *rand.Rand
17+
sqes []*bus.SQE[t_aio.Submission, t_aio.Completion]
18+
cqes []*bus.CQE[t_aio.Submission, t_aio.Completion]
19+
subsystems map[t_aio.Kind]Subsystem
20+
metrics *metrics.Metrics
2321
}
2422

25-
func NewDST(r *rand.Rand, metrics *metrics.Metrics, failureProbability float64) *aioDST {
23+
func NewDST(r *rand.Rand, metrics *metrics.Metrics) *aioDST {
2624
return &aioDST{
27-
r: r,
28-
subsystems: map[t_aio.Kind]Subsystem{},
29-
metrics: metrics,
30-
failureProbability: failureProbability,
25+
r: r,
26+
subsystems: map[t_aio.Kind]Subsystem{},
27+
metrics: metrics,
3128
}
3229
}
3330

@@ -70,6 +67,8 @@ func (a *aioDST) Dequeue(n int) []*bus.CQE[t_aio.Submission, t_aio.Completion] {
7067
a.cqes = a.cqes[min(n, len(a.cqes)):]
7168

7269
for _, cqe := range cqes {
70+
slog.Debug("aio:dequeue", "cqe", cqe)
71+
7372
var status string
7473
if cqe.Error != nil {
7574
status = "failure"
@@ -93,30 +92,7 @@ func (a *aioDST) Flush(t int64) {
9392

9493
for _, sqes := range util.OrderedRangeKV(flush) {
9594
if subsystem, ok := a.subsystems[sqes.Key]; ok {
96-
// Randomly decide whether to process SQE or return an error
97-
if a.r.Float64() < a.failureProbability {
98-
// Create a new CQE
99-
errorCqe := createErrorCQE("aio dst error occurred while processing SQE", "aio dst failure", simpleCallback)
100-
errorCqe.Completion = &t_aio.Completion{}
101-
102-
slog.Debug("aio dst: failure", "err", errorCqe)
103-
a.cqes = append(a.cqes, errorCqe)
104-
} else {
105-
// Do the I/O
106-
processedCQEs := subsystem.NewWorker(0).Process(sqes.Value)
107-
// Randomly decide whether to return an error after processing SQE
108-
if a.r.Float64() < a.failureProbability {
109-
for _, cqe := range processedCQEs {
110-
errorCqe := createErrorCQE("aio dst error occurred after processing SQE", "aio dst failure", simpleCallback)
111-
errorCqe.Completion = &t_aio.Completion{}
112-
113-
slog.Debug("aio dst: failure", "err", errorCqe, "cqe", cqe)
114-
a.cqes = append(a.cqes, cqe, errorCqe)
115-
}
116-
} else {
117-
a.cqes = append(a.cqes, processedCQEs...)
118-
}
119-
}
95+
a.cqes = append(a.cqes, subsystem.NewWorker(0).Process(sqes.Value)...)
12096
} else {
12197
panic("invalid aio submission")
12298
}
@@ -125,19 +101,6 @@ func (a *aioDST) Flush(t int64) {
125101
a.sqes = nil
126102
}
127103

128-
func simpleCallback(completion *t_aio.Completion, err error) {
129-
}
130-
131-
func createErrorCQE(errorMsg string, tags string, callback func(*t_aio.Completion, error)) *bus.CQE[t_aio.Submission, t_aio.Completion] {
132-
errorCqe := &bus.CQE[t_aio.Submission, t_aio.Completion]{
133-
Error: fmt.Errorf(errorMsg),
134-
Metadata: metadata.New("dst error"),
135-
}
136-
errorCqe.Metadata.Tags.Set("aio", tags)
137-
errorCqe.Callback = callback
138-
return errorCqe
139-
}
140-
141104
func (a *aioDST) String() string {
142105
// use subsystem keys so that we can compare cross-store dst runs
143106
subsystems := make([]t_aio.Kind, len(a.subsystems))

test/dst/dst_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ func TestDST(t *testing.T) {
3636

3737
// instatiate api/aio
3838
api := api.New(1000, metrics)
39-
failureProbability := 0.5
40-
aio := aio.NewDST(r, metrics, failureProbability)
39+
aio := aio.NewDST(r, metrics)
4140

4241
// instatiate aio subsystems
4342
network := network.NewDST(&network.ConfigDST{P: 0.5}, r)

0 commit comments

Comments
 (0)