Skip to content

Commit a5f683f

Browse files
Merge #4110
4110: Rename State to ExecutionState r=pattyshack a=pattyshack I'm going to refactor delta view into SpockState and StorageState. Renaming State to ExecutionState to distinguish the different states. Co-authored-by: Patrick Lee <[email protected]>
2 parents 964a4f9 + 9fd81a0 commit a5f683f

File tree

5 files changed

+97
-95
lines changed

5 files changed

+97
-95
lines changed
Lines changed: 71 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const (
2020
// State represents the execution state
2121
// it holds draft of updates and captures
2222
// all register touches
23-
type State struct {
23+
type ExecutionState struct {
2424
// NOTE: A finalized view is no longer accessible. It can however be
2525
// re-attached to another transaction and be committed (for cached result
2626
// bookkeeping purpose).
@@ -99,14 +99,14 @@ func (controller *limitsController) RunWithAllLimitsDisabled(f func()) {
9999
controller.enforceLimits = current
100100
}
101101

102-
func (s *State) View() View {
103-
return s.view
102+
func (state *ExecutionState) View() View {
103+
return state.view
104104
}
105105

106-
// NewState constructs a new state
107-
func NewState(view View, params StateParameters) *State {
106+
// NewExecutionState constructs a new state
107+
func NewExecutionState(view View, params StateParameters) *ExecutionState {
108108
m := meter.NewMeter(params.MeterParameters)
109-
return &State{
109+
return &ExecutionState{
110110
finalized: false,
111111
view: view,
112112
meter: m,
@@ -116,198 +116,198 @@ func NewState(view View, params StateParameters) *State {
116116

117117
// NewChildWithMeterParams generates a new child state using the provide meter
118118
// parameters.
119-
func (s *State) NewChildWithMeterParams(
119+
func (state *ExecutionState) NewChildWithMeterParams(
120120
params meter.MeterParameters,
121-
) *State {
122-
return &State{
121+
) *ExecutionState {
122+
return &ExecutionState{
123123
finalized: false,
124-
view: s.view.NewChild(),
124+
view: state.view.NewChild(),
125125
meter: meter.NewMeter(params),
126-
limitsController: s.limitsController,
126+
limitsController: state.limitsController,
127127
}
128128
}
129129

130130
// NewChild generates a new child state using the parent's meter parameters.
131-
func (s *State) NewChild() *State {
132-
return s.NewChildWithMeterParams(s.meter.MeterParameters)
131+
func (state *ExecutionState) NewChild() *ExecutionState {
132+
return state.NewChildWithMeterParams(state.meter.MeterParameters)
133133
}
134134

135135
// InteractionUsed returns the amount of ledger interaction (total ledger byte read + total ledger byte written)
136-
func (s *State) InteractionUsed() uint64 {
137-
return s.meter.TotalBytesOfStorageInteractions()
136+
func (state *ExecutionState) InteractionUsed() uint64 {
137+
return state.meter.TotalBytesOfStorageInteractions()
138138
}
139139

140140
// BytesWritten returns the amount of total ledger bytes written
141-
func (s *State) BytesWritten() uint64 {
142-
return s.meter.TotalBytesWrittenToStorage()
141+
func (state *ExecutionState) BytesWritten() uint64 {
142+
return state.meter.TotalBytesWrittenToStorage()
143143
}
144144

145-
func (s *State) DropChanges() error {
146-
if s.finalized {
145+
func (state *ExecutionState) DropChanges() error {
146+
if state.finalized {
147147
return fmt.Errorf("cannot DropChanges on a finalized view")
148148
}
149149

150-
return s.view.DropChanges()
150+
return state.view.DropChanges()
151151
}
152152

153153
// Get returns a register value given owner and key
154-
func (s *State) Get(id flow.RegisterID) (flow.RegisterValue, error) {
155-
if s.finalized {
154+
func (state *ExecutionState) Get(id flow.RegisterID) (flow.RegisterValue, error) {
155+
if state.finalized {
156156
return nil, fmt.Errorf("cannot Get on a finalized view")
157157
}
158158

159159
var value []byte
160160
var err error
161161

162-
if s.enforceLimits {
163-
if err = s.checkSize(id, []byte{}); err != nil {
162+
if state.enforceLimits {
163+
if err = state.checkSize(id, []byte{}); err != nil {
164164
return nil, err
165165
}
166166
}
167167

168-
if value, err = s.view.Get(id); err != nil {
168+
if value, err = state.view.Get(id); err != nil {
169169
// wrap error into a fatal error
170170
getError := errors.NewLedgerFailure(err)
171171
// wrap with more info
172172
return nil, fmt.Errorf("failed to read %s: %w", id, getError)
173173
}
174174

175-
err = s.meter.MeterStorageRead(id, value, s.enforceLimits)
175+
err = state.meter.MeterStorageRead(id, value, state.enforceLimits)
176176
return value, err
177177
}
178178

179179
// Set updates state delta with a register update
180-
func (s *State) Set(id flow.RegisterID, value flow.RegisterValue) error {
181-
if s.finalized {
180+
func (state *ExecutionState) Set(id flow.RegisterID, value flow.RegisterValue) error {
181+
if state.finalized {
182182
return fmt.Errorf("cannot Set on a finalized view")
183183
}
184184

185-
if s.enforceLimits {
186-
if err := s.checkSize(id, value); err != nil {
185+
if state.enforceLimits {
186+
if err := state.checkSize(id, value); err != nil {
187187
return err
188188
}
189189
}
190190

191-
if err := s.view.Set(id, value); err != nil {
191+
if err := state.view.Set(id, value); err != nil {
192192
// wrap error into a fatal error
193193
setError := errors.NewLedgerFailure(err)
194194
// wrap with more info
195195
return fmt.Errorf("failed to update %s: %w", id, setError)
196196
}
197197

198-
return s.meter.MeterStorageWrite(id, value, s.enforceLimits)
198+
return state.meter.MeterStorageWrite(id, value, state.enforceLimits)
199199
}
200200

201201
// MeterComputation meters computation usage
202-
func (s *State) MeterComputation(kind common.ComputationKind, intensity uint) error {
203-
if s.finalized {
202+
func (state *ExecutionState) MeterComputation(kind common.ComputationKind, intensity uint) error {
203+
if state.finalized {
204204
return fmt.Errorf("cannot MeterComputation on a finalized view")
205205
}
206206

207-
if s.enforceLimits {
208-
return s.meter.MeterComputation(kind, intensity)
207+
if state.enforceLimits {
208+
return state.meter.MeterComputation(kind, intensity)
209209
}
210210
return nil
211211
}
212212

213213
// TotalComputationUsed returns total computation used
214-
func (s *State) TotalComputationUsed() uint64 {
215-
return s.meter.TotalComputationUsed()
214+
func (state *ExecutionState) TotalComputationUsed() uint64 {
215+
return state.meter.TotalComputationUsed()
216216
}
217217

218218
// ComputationIntensities returns computation intensities
219-
func (s *State) ComputationIntensities() meter.MeteredComputationIntensities {
220-
return s.meter.ComputationIntensities()
219+
func (state *ExecutionState) ComputationIntensities() meter.MeteredComputationIntensities {
220+
return state.meter.ComputationIntensities()
221221
}
222222

223223
// TotalComputationLimit returns total computation limit
224-
func (s *State) TotalComputationLimit() uint {
225-
return s.meter.TotalComputationLimit()
224+
func (state *ExecutionState) TotalComputationLimit() uint {
225+
return state.meter.TotalComputationLimit()
226226
}
227227

228228
// MeterMemory meters memory usage
229-
func (s *State) MeterMemory(kind common.MemoryKind, intensity uint) error {
230-
if s.finalized {
229+
func (state *ExecutionState) MeterMemory(kind common.MemoryKind, intensity uint) error {
230+
if state.finalized {
231231
return fmt.Errorf("cannot MeterMemory on a finalized view")
232232
}
233233

234-
if s.enforceLimits {
235-
return s.meter.MeterMemory(kind, intensity)
234+
if state.enforceLimits {
235+
return state.meter.MeterMemory(kind, intensity)
236236
}
237237

238238
return nil
239239
}
240240

241241
// MemoryIntensities returns computation intensities
242-
func (s *State) MemoryIntensities() meter.MeteredMemoryIntensities {
243-
return s.meter.MemoryIntensities()
242+
func (state *ExecutionState) MemoryIntensities() meter.MeteredMemoryIntensities {
243+
return state.meter.MemoryIntensities()
244244
}
245245

246246
// TotalMemoryEstimate returns total memory used
247-
func (s *State) TotalMemoryEstimate() uint64 {
248-
return s.meter.TotalMemoryEstimate()
247+
func (state *ExecutionState) TotalMemoryEstimate() uint64 {
248+
return state.meter.TotalMemoryEstimate()
249249
}
250250

251251
// TotalMemoryLimit returns total memory limit
252-
func (s *State) TotalMemoryLimit() uint {
253-
return uint(s.meter.TotalMemoryLimit())
252+
func (state *ExecutionState) TotalMemoryLimit() uint {
253+
return uint(state.meter.TotalMemoryLimit())
254254
}
255255

256-
func (s *State) MeterEmittedEvent(byteSize uint64) error {
257-
if s.finalized {
256+
func (state *ExecutionState) MeterEmittedEvent(byteSize uint64) error {
257+
if state.finalized {
258258
return fmt.Errorf("cannot MeterEmittedEvent on a finalized view")
259259
}
260260

261-
if s.enforceLimits {
262-
return s.meter.MeterEmittedEvent(byteSize)
261+
if state.enforceLimits {
262+
return state.meter.MeterEmittedEvent(byteSize)
263263
}
264264

265265
return nil
266266
}
267267

268-
func (s *State) TotalEmittedEventBytes() uint64 {
269-
return s.meter.TotalEmittedEventBytes()
268+
func (state *ExecutionState) TotalEmittedEventBytes() uint64 {
269+
return state.meter.TotalEmittedEventBytes()
270270
}
271271

272-
func (s *State) Finalize() *ExecutionSnapshot {
273-
s.finalized = true
274-
snapshot := s.view.Finalize()
275-
snapshot.Meter = s.meter
272+
func (state *ExecutionState) Finalize() *ExecutionSnapshot {
273+
state.finalized = true
274+
snapshot := state.view.Finalize()
275+
snapshot.Meter = state.meter
276276
return snapshot
277277
}
278278

279279
// MergeState the changes from a the given view to this view.
280-
func (s *State) Merge(other *ExecutionSnapshot) error {
281-
if s.finalized {
280+
func (state *ExecutionState) Merge(other *ExecutionSnapshot) error {
281+
if state.finalized {
282282
return fmt.Errorf("cannot Merge on a finalized view")
283283
}
284284

285-
err := s.view.Merge(other)
285+
err := state.view.Merge(other)
286286
if err != nil {
287287
return errors.NewStateMergeFailure(err)
288288
}
289289

290-
s.meter.MergeMeter(other.Meter)
290+
state.meter.MergeMeter(other.Meter)
291291
return nil
292292
}
293293

294-
func (s *State) checkSize(
294+
func (state *ExecutionState) checkSize(
295295
id flow.RegisterID,
296296
value flow.RegisterValue,
297297
) error {
298298
keySize := uint64(len(id.Owner) + len(id.Key))
299299
valueSize := uint64(len(value))
300-
if keySize > s.maxKeySizeAllowed {
300+
if keySize > state.maxKeySizeAllowed {
301301
return errors.NewStateKeySizeLimitError(
302302
id,
303303
keySize,
304-
s.maxKeySizeAllowed)
304+
state.maxKeySizeAllowed)
305305
}
306-
if valueSize > s.maxValueSizeAllowed {
306+
if valueSize > state.maxValueSizeAllowed {
307307
return errors.NewStateValueSizeLimitError(
308308
value,
309309
valueSize,
310-
s.maxValueSizeAllowed)
310+
state.maxValueSizeAllowed)
311311
}
312312
return nil
313313
}
Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ func createByteArray(size int) []byte {
1919
return bytes
2020
}
2121

22-
func TestState_Finalize(t *testing.T) {
22+
func TestExecutionState_Finalize(t *testing.T) {
2323
view := delta.NewDeltaView(nil)
24-
parent := state.NewState(view, state.DefaultParameters())
24+
parent := state.NewExecutionState(view, state.DefaultParameters())
2525

2626
child := parent.NewChild()
2727

@@ -65,9 +65,9 @@ func TestState_Finalize(t *testing.T) {
6565

6666
}
6767

68-
func TestState_ChildMergeFunctionality(t *testing.T) {
68+
func TestExecutionState_ChildMergeFunctionality(t *testing.T) {
6969
view := delta.NewDeltaView(nil)
70-
st := state.NewState(view, state.DefaultParameters())
70+
st := state.NewExecutionState(view, state.DefaultParameters())
7171

7272
t.Run("test read from parent state (backoff)", func(t *testing.T) {
7373
key := flow.NewRegisterID("address", "key1")
@@ -137,9 +137,11 @@ func TestState_ChildMergeFunctionality(t *testing.T) {
137137

138138
}
139139

140-
func TestState_MaxValueSize(t *testing.T) {
140+
func TestExecutionState_MaxValueSize(t *testing.T) {
141141
view := delta.NewDeltaView(nil)
142-
st := state.NewState(view, state.DefaultParameters().WithMaxValueSizeAllowed(6))
142+
st := state.NewExecutionState(
143+
view,
144+
state.DefaultParameters().WithMaxValueSizeAllowed(6))
143145

144146
key := flow.NewRegisterID("address", "key")
145147

@@ -154,9 +156,9 @@ func TestState_MaxValueSize(t *testing.T) {
154156
require.Error(t, err)
155157
}
156158

157-
func TestState_MaxKeySize(t *testing.T) {
159+
func TestExecutionState_MaxKeySize(t *testing.T) {
158160
view := delta.NewDeltaView(nil)
159-
st := state.NewState(
161+
st := state.NewExecutionState(
160162
view,
161163
// Note: owners are always 8 bytes
162164
state.DefaultParameters().WithMaxKeySizeAllowed(8+2))
@@ -182,7 +184,7 @@ func TestState_MaxKeySize(t *testing.T) {
182184

183185
}
184186

185-
func TestState_MaxInteraction(t *testing.T) {
187+
func TestExecutionState_MaxInteraction(t *testing.T) {
186188
view := delta.NewDeltaView(nil)
187189

188190
key1 := flow.NewRegisterID("1", "2")
@@ -200,7 +202,7 @@ func TestState_MaxInteraction(t *testing.T) {
200202
key4 := flow.NewRegisterID("3", "4567")
201203
key4Size := uint64(8 + 4)
202204

203-
st := state.NewState(
205+
st := state.NewExecutionState(
204206
view,
205207
state.DefaultParameters().
206208
WithMeterParameters(
@@ -222,7 +224,7 @@ func TestState_MaxInteraction(t *testing.T) {
222224
require.Error(t, err)
223225
require.Equal(t, st.InteractionUsed(), key1Size+key2Size+key3Size)
224226

225-
st = state.NewState(
227+
st = state.NewExecutionState(
226228
view,
227229
state.DefaultParameters().
228230
WithMeterParameters(

0 commit comments

Comments
 (0)