1. 07 Dec, 2024 9 commits
  2. 06 Dec, 2024 20 commits
    • smartcontracts's avatar
      fix: have semver-lock build contracts by default (#13223) · f21f95e2
      smartcontracts authored
      semver-lock justfile task didn't build by default which was
      confusing. Now it does.
      f21f95e2
    • Sebastian Stammler's avatar
      txmgr: Disable default batcher tx send timeout (#13284) · 354337cf
      Sebastian Stammler authored
      With Holocene, batcher transaction ordering has to be strictly preserved, so
      trying to send a transaction candidate should just never timeout.
      Note that the txmgr will still bump fees to get a transaction for the
      same nonce submitted.
      354337cf
    • zhiqiangxu's avatar
      add `CheckAndDial` to avoid duplicate code (#13146) · d949564d
      zhiqiangxu authored
      * Don't repeat yourself
      
      * add a log for loadBlocksIntoState
      
      * op-batcher: fix log in batcher/driver.go
      
      * modify log
      
      ---------
      Co-authored-by: default avatarprotolambda <proto@protolambda.com>
      Co-authored-by: default avatarMatthew Slipper <me@matthewslipper.com>
      d949564d
    • Dmitry's avatar
      docs: Fix formatting issue in "Production Releases" Update README.md (#13281) · bb6f5001
      Dmitry authored
      Fix formatting issue in "Production Releases" section
      bb6f5001
    • Matthew Slipper's avatar
      ci: revert cannon-stf-verify (#13289) · 1ac5a35f
      Matthew Slipper authored
      1ac5a35f
    • George Knee's avatar
      0c9b1d52
    • Matthew Slipper's avatar
      ci: Remove go-mod-download (#13277) · 7c8d28dd
      Matthew Slipper authored
      7c8d28dd
    • Matthew Slipper's avatar
      cde5fd7a
    • zhiqiangxu's avatar
      fix loadBlocksIntoState (#13282) · e5498be3
      zhiqiangxu authored
      e5498be3
    • George Knee's avatar
      op-batcher: extract state pruning, block fetching and progress checking into a... · f9eaf1fc
      George Knee authored
      op-batcher: extract state pruning, block fetching and progress checking into a single pure function (#13060)
      
      * remove lastStoredBlock and lastL1Tip from BatchSubmitter state
      
      We can use the channelManager's state to infer lastStoredBlock. And lastL1Tip is actually unused.
      
      * change log line wording
      
      * fix typo
      
      * remove unecessary method
      
      * WIP first pass at computeSyncActions
      
      * computeSyncAction takes a ChannelStatuser interface
      
      also report fully inclusive range of blocks to load
      
      * add happy path test case
      
      * clearState is a pointer
      
      we can use nil value to signal no state clearing should be performed
      
      * add more test cases
      
      * add another test case
      
      * computeSyncActions only takes prevCurrentL1, not prevSyncStatus
      
      * add batcher restart case
      
      * safe chain reorg case
      
      * failed to make progress case
      
      * simplify log messages, print entire struct
      
      * add godoc
      
      * wire up computeSyncActions
      
      * cache prevCurrentL1 on BatchSubmitter
      
      * document stages
      
      * fix loadBlocksIntoState range interpretation
      
      * pass syncStatus, not pointer to syncStatus and add test case for no progress
      
      * check unsafe status before trying to get more blocks
      
      * do not panic on invalid block ranges
      
      return an error instead. This error is ultimated swallowed, matching existing behaviour.
      
      * test: add assetions and mock data about blockID passed to clearState
      
      * add readme section on max channel duration
      
      * add back unit tests for pruning methods
      
      * fix pruneBlocks behaviour when blockCursor pointed at block which is now pruned
      
      * rename waitForNodeSync to sequencerOutOfSync
      
      * Introduce SeqOutOfSyncError
      
      * move SyncActions code to a separate file
      
      * ChannelStatuser -> channelStatuser
      
      * SeqOutOfSyncError -> ErrSeqOutOfSync
      
      * move ctx to first position in fn signature
      
      * do not update cached prevCurrentL1 value if there is an ErrSeqOutOfSync
      
      * Always warn log when computeSyncActions returns an error
      
      * move sync actions test to separate file
      
      * computeSyncActions returns a bool, not an error
      
      There is only ever one kind of error returned
      
      * SyncActions -> syncActions
      
      * define local variables to aid readability
      
      * organise computeSyncActions and introduce startAfresh syncAction
      
      Add comments explaining logical flow: the checks get increasingly deep and we return early where possible.
      
      * undo changes to submodule
      
      * move test utils to sync_actions_test.go file
      
      * ensure pruneChannels clears currentChannel when appropriate
      
      * fix submodule"
      
      * don't try to get number of block if none exists
      
      * improve log
      
      * Update op-batcher/batcher/driver.go
      Co-authored-by: default avatarSebastian Stammler <seb@oplabs.co>
      
      * use struct for block range, not array
      
      * use startAfresh in one more place
      
      * add test case for multiple channels
      
      also set HeadL1 to more realistic values (generally ahead of currentL1 due to nonzero confirmation depth)
      
      * print value of *struct  in Stringer
      
      * add test case when there are no blocks in state
      
      * Update op-batcher/batcher/sync_actions.go
      Co-authored-by: default avatarSebastian Stammler <seb@oplabs.co>
      
      * tighten up log messages and test descriptions
      
      ---------
      Co-authored-by: default avatarSebastian Stammler <seb@oplabs.co>
      f9eaf1fc
    • Matthew Slipper's avatar
      ctb: Fix concurrent map writes error (#13278) · ad868c53
      Matthew Slipper authored
      `ProcessFilesGlob` calls the callback concurrently, so this test needs to lock the `processedFiles` map to prevent panics. See [here](https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/73932/workflows/951eb7de-0611-4bea-b4de-5d3a56c9bf37/jobs/3021176) for an example of this happening.
      ad868c53
    • clabby's avatar
      feat(op-deployer): `Proxy` bootstrap command (#13213) · f17da354
      clabby authored
      * feat(op-deployer): `Proxy` bootstrap command
      
      * code review updates
      
      * linter
      
      ---------
      Co-authored-by: default avatarMatthew Slipper <me@matthewslipper.com>
      f17da354
    • Roberto Bayardo's avatar
    • Dmitry's avatar
      Typo fix Update flags.mk (#13226) · 9dda7290
      Dmitry authored
      9dda7290
    • clabby's avatar
    • Matthew Slipper's avatar
      ce723807
    • smartcontracts's avatar
      maint: remove unnecessary snapshots check script (#13248) · a8c8851e
      smartcontracts authored
      We can do this with a justfile recipe.
      Co-authored-by: default avatarMatthew Slipper <me@matthewslipper.com>
      a8c8851e
    • Adrian Sutton's avatar
    • Matthew Slipper's avatar
      op-conductor: Fix hang in testing (#13266) · 9548d53a
      Matthew Slipper authored
      I've found a [deadlock](https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/73846/workflows/19369ca9-9eaa-4021-9eb8-589a06e7bd34/jobs/3018041) in the op-conductor tests. The inner conductor loop is stuck waiting on a queue signal that never arrives, which in turn causes the test to hang since the coordinating waitgroup is never decremented. I believe this happens because the conductor's `queueAction` method is non-blocking, so nothing ever triggers conductor's inner loop when conductor start up. I've updated the code to use a blocking channel write when conductor starts to avoid this issue.
      
      The traces of the deadlock look like this, for reference:
      
      ```
      goroutine 227 [semacquire, 9 minutes]:
      
      sync.runtime_Semacquire(0xc0004df577?)
      
      	/usr/local/go/src/runtime/sema.go:62 +0x25
      
      sync.(*WaitGroup).Wait(0x0?)
      
      	/usr/local/go/src/sync/waitgroup.go:116 +0x48
      
      github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductorTestSuite).execute(0xc0003e4008, 0x0)
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service_test.go:177 +0x65
      
      github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductorTestSuite).executeAction(...)
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service_test.go:197
      
      github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductorTestSuite).enableSynchronization(0xc0003e4008)
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service_test.go:163 +0x93
      
      github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductorTestSuite).TestScenario4(0xc0003e4008)
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service_test.go:420 +0x27
      
      reflect.Value.call({0xc000131900?, 0xc0001b3740?, 0x1fed5b8?}, {0x191d63c, 0x4}, {0xc0004dff28, 0x1, 0x16f12e0?})
      
      	/usr/local/go/src/reflect/value.go:596 +0xca6
      
      reflect.Value.Call({0xc000131900?, 0xc0001b3740?, 0x28307b8?}, {0xc0004dff28?, 0xf?, 0x0?})
      
      	/usr/local/go/src/reflect/value.go:380 +0xb9
      
      github.com/stretchr/testify/suite.Run.func1(0xc0001f9ba0)
      
      	/home/circleci/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x4a5
      
      testing.tRunner(0xc0001f9ba0, 0xc0001f4e10)
      
      	/usr/local/go/src/testing/testing.go:1689 +0xfb
      
      created by testing.(*T).Run in goroutine 166
      
      	/usr/local/go/src/testing/testing.go:1742 +0x390
      
      goroutine 229 [select, 9 minutes]:
      
      github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductor).loopAction(0xc00056ab40)
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service.go:577 +0x14f
      
      github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductorTestSuite).enableSynchronization.func1()
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service_test.go:159 +0x33
      
      github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductor).loop(0xc00056ab40)
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service.go:570 +0x99
      
      created by github.com/ethereum-optimism/optimism/op-conductor/conductor.(*OpConductor).Start in goroutine 227
      
      	/var/opt/circleci/data/workdir/op-conductor/conductor/service.go:376 +0x1f6
      
      FAIL	github.com/ethereum-optimism/optimism/op-conductor/conductor	600.103s
      ```
      9548d53a
    • Axel Kingsley's avatar
      interop: parallelized receipt fetching (#13044) · 1eb223d8
      Axel Kingsley authored
      * interop: parallelized receipt fetching
      
      * fix test
      
      * remove elastic thread count
      
      * Add Debug Message for Range Fetching
      
      * rename end to last
      
      * Remove Println
      
      ---------
      Co-authored-by: default avatarMatthew Slipper <me@matthewslipper.com>
      1eb223d8
  3. 05 Dec, 2024 11 commits