Skip to content

Commit ee4c00e

Browse files
fix(roller): fix stack bug (#320)
Co-authored-by: HAOYUatHZ <[email protected]>
1 parent e1ec4d1 commit ee4c00e

File tree

4 files changed

+17
-36
lines changed

4 files changed

+17
-36
lines changed

common/version/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"runtime/debug"
66
)
77

8-
var tag = "alpha-v1.14"
8+
var tag = "alpha-v1.15"
99

1010
var commit = func() string {
1111
if info, ok := debug.ReadBuildInfo(); ok {

roller/roller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ func (r *Roller) prove() error {
241241
}
242242
} else {
243243
// when the roller has more than 3 times panic,
244-
// it will omit to prove the task, submit StatusProofError and then Pop the task.
244+
// it will omit to prove the task, submit StatusProofError and then Delete the task.
245245
proofMsg = &message.ProofDetail{
246246
Status: message.StatusProofError,
247247
Error: "zk proving panic",
@@ -251,7 +251,7 @@ func (r *Roller) prove() error {
251251
}
252252

253253
defer func() {
254-
_, err = r.stack.Pop()
254+
err = r.stack.Delete(task.Task.ID)
255255
if err != nil {
256256
log.Error("roller stack pop failed!", "err", err)
257257
}

roller/store/stack.go

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -81,28 +81,12 @@ func (s *Stack) Peek() (*ProvingTask, error) {
8181
return traces, nil
8282
}
8383

84-
// Pop pops the proving-task on the top of Stack.
85-
func (s *Stack) Pop() (*ProvingTask, error) {
86-
var value []byte
87-
if err := s.Update(func(tx *bbolt.Tx) error {
88-
var key []byte
84+
// Delete pops the proving-task on the top of Stack.
85+
func (s *Stack) Delete(taskID string) error {
86+
return s.Update(func(tx *bbolt.Tx) error {
8987
bu := tx.Bucket(bucket)
90-
c := bu.Cursor()
91-
key, value = c.Last()
92-
return bu.Delete(key)
93-
}); err != nil {
94-
return nil, err
95-
}
96-
if len(value) == 0 {
97-
return nil, ErrEmpty
98-
}
99-
100-
task := &ProvingTask{}
101-
err := json.Unmarshal(value, task)
102-
if err != nil {
103-
return nil, err
104-
}
105-
return task, nil
88+
return bu.Delete([]byte(taskID))
89+
})
10690
}
10791

10892
// UpdateTimes udpates the roller prove times of the proving task.

roller/store/stack_test.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@ func TestStack(t *testing.T) {
3636
}
3737

3838
for i := 2; i >= 0; i-- {
39-
var pop *ProvingTask
40-
pop, err = s.Pop()
39+
var peek *ProvingTask
40+
peek, err = s.Peek()
41+
assert.NoError(t, err)
42+
assert.Equal(t, strconv.Itoa(i), peek.Task.ID)
43+
err = s.Delete(strconv.Itoa(i))
4144
assert.NoError(t, err)
42-
assert.Equal(t, strconv.Itoa(i), pop.Task.ID)
4345
}
4446

4547
// test times
@@ -52,18 +54,13 @@ func TestStack(t *testing.T) {
5254
}
5355
err = s.Push(task)
5456
assert.NoError(t, err)
55-
pop, err := s.Pop()
56-
assert.NoError(t, err)
57-
err = s.Push(pop)
58-
assert.NoError(t, err)
59-
6057
peek, err := s.Peek()
6158
assert.NoError(t, err)
62-
pop2, err := s.Pop()
59+
assert.Equal(t, 0, peek.Times)
60+
err = s.UpdateTimes(peek, 3)
6361
assert.NoError(t, err)
64-
assert.Equal(t, peek, pop2)
6562

66-
s.UpdateTimes(pop2, 1)
63+
peek2, err := s.Peek()
6764
assert.NoError(t, err)
68-
assert.Equal(t, 1, pop2.Times)
65+
assert.Equal(t, 3, peek2.Times)
6966
}

0 commit comments

Comments
 (0)