Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

go-algorand 3.2.0-beta #3231

Merged
merged 80 commits into from
Nov 23, 2021
Merged

go-algorand 3.2.0-beta #3231

merged 80 commits into from
Nov 23, 2021

Commits on Oct 7, 2021

  1. Inner groups (#3009)

    itxn_next to give us inner groups
    
    Questions remain around how TxID and GroupID should be defined for inners.
    jannotti committed Oct 7, 2021
    Configuration menu
    Copy the full SHA
    c579bf6 View commit details
    Browse the repository at this point in the history
  2. Disable the participation key refresh on the TestPartitionHalfOffline…

    … branch. (#3017)
    
    ## Summary
    
     Disable the participation key refresh on the TestPartitionHalfOffline test. The test was failing with the following threads running:
    
    ```
    algod(20739) : github.com/algorand/go-algorand/agreement.(*asyncPseudonode).loadRoundParticipationKeys(0xc0033dad20, 0x2, 0xc0039c8180, 0xc000530000, 0xc000dcb0d0)
    ```
    ```
    algod(20739) : github.com/algorand/go-algorand/data/account.PersistedParticipation.DeleteOldKeys(0x92c6b21bbd8fefac, 0xed2d99ce769768ea, 0xac85a3b9466cead1, 0xc32937d7e4c532f9, 0xc000043260, 0xc0002b04b0, 0x0, 0x2dc6c0, 0x2710, 0xc0001892c0, ...)
    ```
    ```
    algod(20739) : github.com/algorand/go-algorand/data.(*AccountManager).AddParticipation(0xc0001191a0, 0xd175b5d042fa1c39, 0x2140fe15c6a19653, 0xc66f7b9c58cf5ed1, 0x107d657815b44d49, 0xc0037a4d20, 0xc0002b0690, 0x0, 0x2dc6c0, 0x2710, ...)
    ```
    
    By avoiding the participation key reload ( which isn't needed for this test ), I'm hoping to avoid the issue.
    
    ## Test Plan
    
    This is a test.
    tsachiherman committed Oct 7, 2021
    Configuration menu
    Copy the full SHA
    6887d0e View commit details
    Browse the repository at this point in the history
  3. Added Participation Key Expiration Check (#2924)

    ## Summary
    
    Resolves #2738
    
    Adds the following:
    
    - consensus.go: Adds the default MaxExpiredAccountsToProcess value for
      the new consensus protocol
    - block.go: Adds necessary block header entries
    - eval.go: Scans for expired accounts, modifies them to be offline and adds
      validation for this use case
    - eval_test.go: Basic unit tests
    - participationExpiration_test.go: Added e2e tests that verify that
      different consensus protocols behave differently
    
    ## Test Plan
    
    Unit test and e2e tests added
    AlgoStephenAkiki committed Oct 7, 2021
    Configuration menu
    Copy the full SHA
    c59326f View commit details
    Browse the repository at this point in the history

Commits on Oct 8, 2021

  1. ledger: preload resources argument in EvalForIndexer (#3019)

    ## Summary
    
    rebase Tolik's PR on master; this PR add the ability for the indexer to preload account data so that it would be used by the evaluator.
    
    ## Test Plan
    
    Existing unit tests updated.
    tsachiherman committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    ff8139a View commit details
    Browse the repository at this point in the history
  2. Move accountdb schema migration to trackerdb.go (#2984)

    ## Summary
    
    * Moved code from **acctupdates.go** to **trackerdb.go**.
    * Extracted  db creation and init from`accountsInitialize` to `trackerDBInitialize`
    * `reloadLedger` now calls `trackerDBInitialize` right after block db init
    * `reloadLedger` also has post-creation actions like vacuuming
    
    Limitations:
    1. Tables creation still calls `accountsInit` for initial tables creation and inserting genesis accounts.
    2. Migration code still have some business logic. 
    
    ## Test Plan
    
    Use existing test suite
    algorandskiy committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    32e131c View commit details
    Browse the repository at this point in the history
  3. Increase machine size to large and use consistent parallelism for cir…

    …cleci nightly testing. (#3016)
    
    For CircleCI testing, increase machine size from medium to large and set parallelism to 4.
    egieseke committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    7357acf View commit details
    Browse the repository at this point in the history
  4. Don't set dontReportFailures for Fail (#3018)

    In testing.T, Error, Errorf, and Fail do not terminate the test.
    Error and Errorf call Fail.
    There will be another call to FailNow to terminate the test. (FailNow also calls Fail.)
    
    When `dontReportFailures` is set in Error, Errorf, and Fail, the test will not be terminated.
    Moreover, the subsequent call to FailNow will be ignored because of the set dontReportFailures flag.
    
    In this change, dontReportFailures will not be set for Error, Errorf, and Fail so that the subsequent FailNow will terminate the test.
    algonautshant committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    e00cde0 View commit details
    Browse the repository at this point in the history
  5. ledger: refactor evaluator into an internal package (#2983)

    ## Summary
    
    This PR reorganize the files inside the ledger package by move the evaluator related files into its own `internal` package.
    The files in the internal package cannot access the root ledger files, and therefore using the shared `ledgercore` as a place to share interfaces.
    
    ```
    ledger/
    ├── apply/
    ├── internal/
    ├── ledgercore/
    └── testing/
    ```
    
    ## Test Plan
    
    use existing test, and update existing tests.
    tsachiherman committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    239921a View commit details
    Browse the repository at this point in the history
  6. fix bug in rekey test. (#3026)

    Summary
    This test has a special handling is case the protocol upgrade completes before we can validate that without an upgrade the rekey feature won't work. However, when that does happen, AccountA is already rekeyed, and would require a different handling.
    
    To avoid that while retaining the execution of the test, I've moved the second part to use a different set of accounts.
    
    Test Plan
    This is a test
    tsachiherman committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    3c9e9e9 View commit details
    Browse the repository at this point in the history

Commits on Oct 9, 2021

  1. fix regression (#3029)

    ## Summary
    
    This PR addresses a regression introduced in #2983. 
    The culprit is that an interface might contain a nil pointer, which makes it insufficient to test the interface pointer itself.
    
    Fail cases: https://app.circleci.com/pipelines/github/algorand/go-algorand/2451/workflows/8807ced7-89ae-4b6b-96b0-1bc5bdf9d84c/jobs/27259/tests#failed-test-0
    
    ## Test Plan
    
    Use existing unit testing. In particular TestCatchupOverGossip.
    tsachiherman committed Oct 9, 2021
    Configuration menu
    Copy the full SHA
    0d5b66e View commit details
    Browse the repository at this point in the history

Commits on Oct 11, 2021

  1. testing: make the TestMultiThreaded run at a constant time (#3035)

    ## Summary
    
    The TestMultiThreaded was running too slow on Travis machines, causing it to fail due to deadlock detection false-positive.
    
    The change in this PR modify the execution time of the test, ensuring that it won't run for more than 5 second ( which should be enough for data racing detection testing )
    
    ## Test Plan
    
    This is a test.
    tsachiherman committed Oct 11, 2021
    Configuration menu
    Copy the full SHA
    e490f05 View commit details
    Browse the repository at this point in the history
  2. txnsync: fix potential race during TestBasicCatchpointCatchup (#3033)

    ## Summary
    
    During fast catchup, we restart the transaction sync service very quickly.
    This can cause a network message being sent, and the response would be returned to the "restarted" txnsync.
    
    Since we don't want to disconnect the network connection itself ( which could have some messages enqueued ), the transaction sync would need to store the "returned" channel before sending the message. That would avoid the data race ( and safely ignore the incoming message ).
    
    ## Test Plan
    
    Use existing testing, and confirm against that.
    tsachiherman committed Oct 11, 2021
    Configuration menu
    Copy the full SHA
    8568442 View commit details
    Browse the repository at this point in the history
  3. ledger: move StartEvaluator parameters into a parameters object (#3030)

    ## Summary
    
    move StartEvaluator parameters into an object. Given that most of the time the parameters are using a "default" state, it reduce the number of passed parameters, improving the caller readability.
    
    ## Test Plan
    
    Unit tests updated.
    tsachiherman committed Oct 11, 2021
    Configuration menu
    Copy the full SHA
    4c45443 View commit details
    Browse the repository at this point in the history
  4. Fix regression in TestReproducibleCatchpointLabels (#3037)

    Fix the test TestReproducibleCatchpointLabels, by provide proper calculation of the account totals.
    tsachiherman committed Oct 11, 2021
    Configuration menu
    Copy the full SHA
    6f96443 View commit details
    Browse the repository at this point in the history
  5. Removing integration tests from travis steps (#3023)

    Due to Travis not being able to handle our builds anymore, we are removing travis integration tests.
    algojack committed Oct 11, 2021
    Configuration menu
    Copy the full SHA
    a516544 View commit details
    Browse the repository at this point in the history

Commits on Oct 12, 2021

  1. Adjust TenNodesDistributedMultiWallet.json to use smaller key dilutio…

    …n values (#3041)
    
    ## Summary
    
    The e2e test `TestPartitionHalfOffline` was failing due to the deadlock detection failing while the old keys are being deleted.
    This change would reduce the key dilution, and should shorten the duration it takes to generate a new batch.
    
    ## Test Plan
    
    This is a test.
    tsachiherman committed Oct 12, 2021
    Configuration menu
    Copy the full SHA
    c4bbdf8 View commit details
    Browse the repository at this point in the history
  2. testing: remove redundant checking from TestParticipationAccountsExpi…

    …rationFuture (#3043)
    
    ## Summary
    
    Reduce unneeded tests from TestParticipationAccountsExpirationFuture.
    
    Resolves #3042
    
    ## Test Plan
    
    This is a test
    AlgoStephenAkiki committed Oct 12, 2021
    Configuration menu
    Copy the full SHA
    e86c53f View commit details
    Browse the repository at this point in the history
  3. handle is left open in importRootKeys (#3039)

    ## Summary
    
    The database handle is not closed in this code path.
    In normal situations, this passes unnoticed, since it will be closed once the test terminates. However, when running the test multiple times, the OS will complain about too many open files. 
    
    ## Test Plan
    This is a test infrastructure fix.
    algonautshant committed Oct 12, 2021
    Configuration menu
    Copy the full SHA
    da60399 View commit details
    Browse the repository at this point in the history

Commits on Oct 13, 2021

  1. Fix global-state-schema key name in REST API spec (#2972)

    Fix global-state-schema key name in REST API spec
    algorandskiy committed Oct 13, 2021
    Configuration menu
    Copy the full SHA
    83bcaaa View commit details
    Browse the repository at this point in the history
  2. ledger: Implement LookupAgreement (#3046)

    ## Summary
    
    1. Add  a new `OnlineAccountData` data type
    2. Implement `LookupAgreement`
    
    ## Test Plan
    
    Fixed existed tests: added `LookupAgreement` to mocked ledgers
    algorandskiy committed Oct 13, 2021
    Configuration menu
    Copy the full SHA
    a957519 View commit details
    Browse the repository at this point in the history
  3. Use LookupAgreement AlgorandFullNode.VotingKeys() (#3050)

    ## Summary
    
    Use LookupAgreement in AlgorandFullNode.VotingKeys()
    
    Post #3046 fixes.
    algorandskiy committed Oct 13, 2021
    Configuration menu
    Copy the full SHA
    c4bfc26 View commit details
    Browse the repository at this point in the history
  4. Reorder round query and transaction sending. (#3049)

    ## Summary
    
    The test had a conceptual buggy pattern. It was using 
    ```golang
    round, err = client.CurrentRound()
    ...
    _, err = client.BroadcastTransaction(signedTxn)
    ...
    _, err = client.WaitForRound(round + 3)
    ```
    which is doomed to fail if the test process goes to sleep for a minute between the `client.CurrentRound()` call and the `client.BroadcastTransaction` call. The trivial solution is to reorder the calls so that 
    ```golang
    _, err = client.BroadcastTransaction(signedTxn)
    ...
    round, err = client.CurrentRound()
    ...
    _, err = client.WaitForRound(round + 3)
    ```
    
    
    ## Test Plan
    
    This is a test.
    tsachiherman committed Oct 13, 2021
    Configuration menu
    Copy the full SHA
    3572e1f View commit details
    Browse the repository at this point in the history

Commits on Oct 14, 2021

  1. testing: remove account balance checks (#3054)

    Summary
    Adds additional resilience to participation expiration test TestParticipationAccountsExpirationFuture.
    
    Test Plan
    This is a test.
    AlgoStephenAkiki committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    44e85be View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    754276b View commit details
    Browse the repository at this point in the history
  3. Allow all trackers committing into DB (#3014)

    ## Summary
    
    Historically only `account updates` tracker was committing into DB. The PR changes this:
    1. `dbRound` management and `commitSyncer` business moved to trackerRegistry.
    2.  `account updates` is used as a driver for committing tasks scheduling - by given `commttedRound` and `dbRound` it figures out offset in detlas for saving to the disk. This is basically old `au.committedUpTo` method`.
    3. `commitRound` replaced by `prepareCommit` that returns commit and post commit callbacks
    4. trackerRegistry has own `commitRound` that calls  trackers' `prepareCommit` and commit/post commit procs if any.
    5. `account updates` still have a cached dbRound to be used in Lookup methods.
    
    ## Test Plan
    
    It is refactoring, use existing tests
    algorandskiy committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    507eb53 View commit details
    Browse the repository at this point in the history
  4. Move deploy from TravisCI to CircleCI (#3075)

    Our travisci keeps breaking for different reasons so we decided to move our deploy to circleci.
    algojack committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    5c7e273 View commit details
    Browse the repository at this point in the history
  5. ledger: remove duplicate testing of accounts totals (#3053)

    ## Summary
    
    This PR eliminate the `totalsNewRounds`, which perform the exact same calculation previously performed by the block evaluator.
    
    ## Test Plan
    
    - [x] Unit tests updates.
    - [x] Catchpoint label testing : starting a node catching up to 16,800,000 and the correct catchpoint label was observed on round 16,810,000.
    tsachiherman committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    019571e View commit details
    Browse the repository at this point in the history

Commits on Oct 15, 2021

  1. Fixing CircleCI deploy for Betanet and Stablenet (#3077)

    Noticed our environment passing variable is not working as intended, implemented a different way of passing it.
    algojack committed Oct 15, 2021
    Configuration menu
    Copy the full SHA
    ffb49ef View commit details
    Browse the repository at this point in the history

Commits on Oct 16, 2021

  1. Fix missing TX registration (#3080)

    ## Summary
    
    When a 2.1 (i.e. no txsync) client connects to a 3.0 relay (i.e. txsync), the relay needs to request the client to keep sending it a TX messages - otherwise, these transactions would not get propagated.
    
    The 2.1 and 3.0 above are network protocol versions, not a algod release version.
    
    ## Test Plan
    
    e2e test added.
    tsachiherman committed Oct 16, 2021
    Configuration menu
    Copy the full SHA
    b9c6032 View commit details
    Browse the repository at this point in the history

Commits on Oct 18, 2021

  1. changing circleci workflow name (#2887)

    Fixing naming due to new way of displaying CircleCI workflow.
    algojack committed Oct 18, 2021
    Configuration menu
    Copy the full SHA
    bcd77ee View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    78317e8 View commit details
    Browse the repository at this point in the history

Commits on Oct 19, 2021

  1. catchup: avoid requesting blocks that aren't needed by the ledger (#3089

    )
    
    Summary
    avoid requesting blocks that aren't needed by the ledger.
    
    This isn't done for the sake of optimization - it's done so we won't have misleading warning messages in the log file due to frequently canceled contexts.
    
    Test Plan
    tested manually.
    tsachiherman committed Oct 19, 2021
    Configuration menu
    Copy the full SHA
    f0017f3 View commit details
    Browse the repository at this point in the history
  2. Optimize circleci machine sizes and parallelism (#3095)

    Since we increased a lot of things last week to pass beta tests quickly, we needed to go back and update machine sizes and parallelism for all but integration tests.
    algojack committed Oct 19, 2021
    Configuration menu
    Copy the full SHA
    bd4cd9a View commit details
    Browse the repository at this point in the history
  3. network: add initial support for latency tracking (#3028)

    ## Summary
    
    This PR adds the node ( both client and server ), the ability to measure the time it takes to establish an outgoing connection ( excluding the TCP connection time ).
    This duration is captured as the initial latency, which would need to get updated via a pingpong style logic.
    
    ## Test Plan
    
    - [x] Extend existing unit tests
    - [x] mainnet-model testing is needed as well to confirm correctness
    tsachiherman committed Oct 19, 2021
    Configuration menu
    Copy the full SHA
    48d4075 View commit details
    Browse the repository at this point in the history

Commits on Oct 20, 2021

  1. txnsync: implement missing bridge between txnsync and classic transac…

    …tion messages (#3102)
    
    Summary
    This PR adds the missing bridge between the txnsync and the classic transaction relaying:
    when a transaction message arrive and being added to the transaction pool, we need to attempt to
    relay these messages right away using the classic transaction messages. That would allow relays to
    be compatible with both 2.1 and 3.0 nodes.
    
    Test Plan
    e2e test was added.
    tsachiherman committed Oct 20, 2021
    Configuration menu
    Copy the full SHA
    e853e2e View commit details
    Browse the repository at this point in the history
  2. Refactoring ABI encoding feature (#3055)

    Removed data/abi/abi_value.go
    Encode/Decode method take golang values, the behavior should be based on ABI type schemes
    ahangsu committed Oct 20, 2021
    Configuration menu
    Copy the full SHA
    1e5603c View commit details
    Browse the repository at this point in the history
  3. Increase wait time for the transaction to be included. (#3098)

    ## Summary
    
    This change wait for a given broadcasted transaction to be included instead of expecting it to be included after a predetermined number of rounds. This would increase the testing platform flexibility in case we're testing on slow machines.
    
    ## Test Plan
    
    This is a test.
    tsachiherman committed Oct 20, 2021
    Configuration menu
    Copy the full SHA
    c2054e5 View commit details
    Browse the repository at this point in the history

Commits on Oct 21, 2021

  1. tealdbg: use associated group index instead of global (#3111)

    setting group index to be the one associated with the run
    barnjamin committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    38b08a0 View commit details
    Browse the repository at this point in the history
  2. skip fields that cant be displayed anyway (#3119)

    In tealdbg, the txn obj has a number of fields that are only available after the transaction has been evaluated in ApplyData. At the moment we show "Unable to obtain effects from top-level transactions" from https://github.com/algorand/go-algorand/blob/master/data/transactions/logic/eval.go#L1939 . This should be hidden for now.
    barnjamin committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    473fa37 View commit details
    Browse the repository at this point in the history
  3. Add buildpulse (#3051)

    This adds buildpulse integration using their orb.
    cce committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    57a3306 View commit details
    Browse the repository at this point in the history
  4. Add err to solicitedAsyncTxHandler.loop log message (#3123)

    ## Summary
    
    I noticed log messages like this:
    ```
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.220089Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.220226Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.220300Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.228731Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.228828Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.228893Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.228946Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.229012Z"}
    {"file":"txHandler.go","function":"github.com/algorand/go-algorand/data.(*solicitedAsyncTxHandler).loop","level":"info","line":541,"msg":"solicitedAsyncTxHandler was unable to relay transaction message : %!v(MISSING)","time":"2021-10-20T23:18:40.229080Z"}
    ```
    
    ## Test Plan
    
    No test changes.
    cce committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    f17f8f6 View commit details
    Browse the repository at this point in the history
  5. Make fields in ledger.Creatable public. (#3125)

    Summary
    Indexer needs to be able to set those fields.
    tolikzinovyev committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    28e9eca View commit details
    Browse the repository at this point in the history
  6. Enable totals calculation in eval for indexer. (#3124)

    Enable totals calculation in eval for indexer
    tolikzinovyev committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    17429d5 View commit details
    Browse the repository at this point in the history

Commits on Oct 22, 2021

  1. update the websocket library. (#3131)

    ## Summary
    
    The previous web socket version was not flushing the write buffer when writing a Close control message.
    As a result, we ended up disconnection the connection on one side correctly, while having it in a zombie state on the other side.
    
    ## Test Plan
    
    Use existing tests. The `TestSlowPeerDisconnection` was already observing the issue being resolved.
    tsachiherman committed Oct 22, 2021
    Configuration menu
    Copy the full SHA
    2c79cfd View commit details
    Browse the repository at this point in the history

Commits on Oct 24, 2021

  1. Improve Bandwidth Estimation in Txnsync (#3096)

    
    ## Summary
    
    
    Improve the bandwidth estimation within the transaction sync by having the estimation account for latency, transaction compression time, and time spent waiting in the incoming queue.
    
    ## Test Plan
    
    
    Wrote unit tests for correctness, ran network on mainnet model and observed measured bandwidths. Before the bandwidth would converge to the minimum over time as well have erratic inaccuracies. Now the numbers look much more in range, at most a factor of 2 off.
    nicholasguoalgorand committed Oct 24, 2021
    Configuration menu
    Copy the full SHA
    b93ad64 View commit details
    Browse the repository at this point in the history

Commits on Oct 25, 2021

  1. catchup: ignore benign evaluator failures (#3135)

    ## Summary
    
    The catchup was occasionally reporting
    ```
    (1): fetchAndWrite(13932148): ledger write failed: block evaluation for round 13932148 requires sequential evaluation while the latest round is 13932148
    ```
    
    This issue indicates that the catchup was attempting to validate a block which is not the latest+1, but rather newer.
    In this case, we can safely ignore this error, and skip applying this block, since the block was already added to the ledger.
    
    ## Test Plan
    
    Tested manually.
    tsachiherman committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    72a1717 View commit details
    Browse the repository at this point in the history
  2. Trim the whitespaces before/after each line of TEAL code (#3128)

    Trimming the whitespaces before and after each line in TEAL code.
    
    In #2168, white space before #pragma version XXX leads to a failure in inferring the TEAL version. Relaxing assembler rules resolves the issue.
    
    Closes #2168.
    ahangsu committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    9c3f403 View commit details
    Browse the repository at this point in the history
  3. txnsync: delete-able incoming message queue (#3126)

    ## Summary
    
    Running betanet, we've seen errors such as
    ```
    unable to enqueue incoming message into peer incoming message backlog. disconnecting from peer.
    ```
    as well as multiple
    ```
    Peer 162.202.32.72:56543 disconnected: SlowConnection
    ```
    
    The goal of this PR is to remove from the pending incoming message queue entries that are associated with network peers that have been disconnected ( by the network package ), or have been scheduled for disconnection ( by the transaction synch package ).
    
    Removing these would increase the "available" space in the incoming message queue and would prevent redundant disconnections.
    
    ## Test Plan
    
    - [x] unit tests updated.
    - [x] ran s1 network with and without load, successfully.
    tsachiherman committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    ca3e877 View commit details
    Browse the repository at this point in the history

Commits on Oct 26, 2021

  1. Allow getting versions for any package. (#2935)

    ## Summary
    
    Add an option to support version checking for arbitrary packages. This would allow us to deploy indexer releases at `algorand-releases/<channel>/indexer-*`
    
    ## Test Plan
    
    Ran the command and see the correct regex:
    ```
    ~$ updater ver check -c nightly -p indexer
    Checking for files matching: 'channel/nightly/indexer_nightly_linux-amd64_' in bucket algorand-releases
    no updates found for channel 'nightly'
    ```
    winder committed Oct 26, 2021
    Configuration menu
    Copy the full SHA
    9bb4154 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e2d6349 View commit details
    Browse the repository at this point in the history

Commits on Oct 27, 2021

  1. ledger: refactor ledger internal tests (#3149)

    Summary
    Refactor internal ledger evaluator testing to use the real ledger instead of using a dummy ledger.
    In order to do this, I moved the related tests into an "internal_test" package. That allowed me to import both "ledger/internal" as well as "ledger", and conduct the test against a real ledger.
    
    Test Plan
    These are tests.
    tsachiherman committed Oct 27, 2021
    Configuration menu
    Copy the full SHA
    729e597 View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2021

  1. update sys to resolve go1.17 build error (#3157)

    Summary
    
    @barnjamin mentioned in #2899 that labstack/gommon/issues/46 has a similar issue.
    
    Should be fixed by up version of sys. Closing #2899.
    ahangsu committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    024eddb View commit details
    Browse the repository at this point in the history
  2. Make heapwatch.py port configurable (#3143)

    This makes it possible to configure which port algod is running on when using heapWatch.py
    bricerisingalgorand committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    c56ecc2 View commit details
    Browse the repository at this point in the history
  3. Reverse the network protocols ordering to de-prioritize the txnsync u…

    …tilization. (#3153)
    
    ## Summary
    
    In order to reduce risk on the migration to the new transaction sync, the network protocols order was flipped.
    Nodes would default to use the old transaction propagation, and would use the new transaction propagation only when configured via the config.json "NetworkProtocol" flag.
    
    ## Test Plan
    
    Need to be tested on betanet.
    tsachiherman committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    246ac13 View commit details
    Browse the repository at this point in the history
  4. Removing all but windows builds from Travis (#3154)

    We moved everything but windows to CircleCI, this is just cleaning up.
    algojack committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    465c191 View commit details
    Browse the repository at this point in the history

Commits on Oct 29, 2021

  1. Add c5d.4xlarge and c5d.18xlarge us-east-2 to hosttemplates.json (#3160)

    Add c5d.4xlarge and c5d.18xlarge us-east-2 to hosttemplates.json so that our team can use them moving forward for performance tests.
    
    For performance testing, we've needed to add these to each codebase we're working with to use these machines. This is part of our effort to automate performance testing internally.
    algobarb committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    175c1f4 View commit details
    Browse the repository at this point in the history
  2. Move Local structure definition to localTemplate (#3161)

    ## Summary
    
    Move Local structure definition to localTemplate, so that changes to localTemplate are more obvious to be a change of template than a change of data.
    
    ## Test Plan
    
    Tested manually.
    tsachiherman committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    9ca31f8 View commit details
    Browse the repository at this point in the history
  3. ledger: refactor maxPaysetHint -> avarageEncodedTxnSizeHint (#3162)

    ## Summary
    
    This refactoring would eliminate the need to change the maxPaysetHint while we modify the block size.
    
    ## Test Plan
    
    Use existing tests.
    tsachiherman committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    b8ac4ba View commit details
    Browse the repository at this point in the history
  4. ledger: do final validation in endOfBlock() (#3132)

    ## Summary
    
    1. It doesn't make sense to calculate new totals in `finalValidation()`
    2. `endOfBlock()` already does some validation
    
    Moving the content of `finalValidation()` to `endOfBlock()` makes things more reasonable.
    tolikzinovyev committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    5eb09af View commit details
    Browse the repository at this point in the history
  5. txnsync: Use dynamic maxEncodedTransactionGroups (#3168)

    ## Summary
    
    Change constants in the txnsync around message size limits into variables based on maxTxPoolSize. This will allow for support of larger message sizes when dealing with larger load.
    
    ## Test Plan
    
    Reran existing tests
    nicholasguoalgorand committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    21c752e View commit details
    Browse the repository at this point in the history

Commits on Oct 30, 2021

  1. Add unit test to avoid new string fields (#3101)

    * Add unit test to check for string fields
    
    * Fix seen set and add exceptions for state deltas
    
    * Also check AccountData
    
    * Minor rename
    
    * Add license
    
    * Accidentally pushed to origin, need new hash
    jasonpaulos committed Oct 30, 2021
    Configuration menu
    Copy the full SHA
    385afd5 View commit details
    Browse the repository at this point in the history

Commits on Nov 1, 2021

  1. make proposal assembly time configurable (#3165)

    ## Summary
    
    This PR is doing the following:
    1. Moves the proposal deadline computation outside of the agreement package and onto the node package. The agreement wasn't doing anything with the deadline anyway.
    2. Make the proposal deadline be configured using a configuration parameter rather then a global hard-coded value in the config package.
    
    ## Test Plan
    
    Existing unit test provides sufficient coverage for this change.
    tsachiherman committed Nov 1, 2021
    Configuration menu
    Copy the full SHA
    168cfe5 View commit details
    Browse the repository at this point in the history

Commits on Nov 3, 2021

  1. Fix panic on closing nil db (#3175)

    ## Summary
    
    FillDBWithParticipationKeys will return empty PersistedParticipation when lastValid is less than firstValid.
    When this happens, newPart will not have partdb in newPart.Store, instead, will have an empty object.
    Calling Close on the empty object will call close on nil Accessor pointer and panic.
    
    This change avoids using the returned object with non-nil error, and properly closes the db with the valid object.
    ## Test Plan
    
    Added test to verify the proper handling of the different errors returned from FillDBWithParticipationKeys and handled by GenParticipationKeysTo.
    algonautshant committed Nov 3, 2021
    Configuration menu
    Copy the full SHA
    009b798 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8ff58cb View commit details
    Browse the repository at this point in the history
  3. Fix typo in batchverifier.go (#3176)

    fix typo: "on" -> "one" in ErrBatchVerificationFailed
    StylishTriangles committed Nov 3, 2021
    Configuration menu
    Copy the full SHA
    3a6238d View commit details
    Browse the repository at this point in the history
  4. txnsync: rollback (#3177)

    ## Summary
    
    This PR rolls back the txsync, retaining only the config file changes
    tsachiherman committed Nov 3, 2021
    Configuration menu
    Copy the full SHA
    e10fe1c View commit details
    Browse the repository at this point in the history
  5. roundCowBase: use lookup() instead of going to ledger directly. (#3173)

    ## Summary
    
    Going to ledger directly prevents caching of accounts.
    
    I'm looking into poor indexer import performance on testnet at rounds > 17M, and I noticed that one account is looked up a lot of times in same round.
    tolikzinovyev committed Nov 3, 2021
    Configuration menu
    Copy the full SHA
    9b39c66 View commit details
    Browse the repository at this point in the history

Commits on Nov 4, 2021

  1. ledger: create catchpoint tracker (#3085)

    ## Summary
    
    Extract catchpoint logic out of the accounts update tracker.
    
    ## Test Plan
    
    Refactor existing unit tests.
    tsachiherman committed Nov 4, 2021
    Configuration menu
    Copy the full SHA
    f72764b View commit details
    Browse the repository at this point in the history

Commits on Nov 6, 2021

  1. Report assembly error strings for compile API endpoint (#3190)

    * Add error strings to v2 TEAL compile endpoint
    
    * Move number of errors to end so it is consistent with goal clerk compile
    
    * Refactor ReportProblems() to take io.Writer
    
    * Don't report number of errors on the API call
    algochoi committed Nov 6, 2021
    Configuration menu
    Copy the full SHA
    63e16ed View commit details
    Browse the repository at this point in the history

Commits on Nov 9, 2021

  1. Add ABI support to goal (#3088)

    * add abi encoding
    
    * accord with go-algorand code format
    
    * minor modification
    
    * add partition test
    
    * resolve review, need more testcase rewrite
    
    * move from cmd/goal to data, resolve review
    
    * rewrite is-dynamic, dynamic array
    
    * update dynamic array 0 element support, test needed
    
    * minor
    
    * minor
    
    * minor
    
    * add more testcase for abi encode/decode
    
    * update comments in encoding test
    
    * minor
    
    * attempt to split abi.go into 2 files
    
    * separate abi files to smaller files
    
    * resolve reviews, work on random gen tuple value encode/decode
    
    * add random tuple test
    
    * remove math-rand, use crypto-rand
    
    * minor
    
    * minor
    
    * some change requested from community
    
    * fix for 1 corner case
    
    * resolve review comments
    
    * resolve review comments
    
    * minor
    
    * minor
    
    * update encode slot capacity
    
    * minor
    
    * resolve reviews
    
    * minor update on bool bytelen calculate
    
    * update encode/decode from types
    
    * random test remain to be modified
    
    * testing variable renaming, encode int support (u)int types
    
    * update test scripts and remove value struct
    
    * follow golint
    
    * partly resolving comments
    
    * whoops uint encoding update
    
    * update int decode to primitive types method
    
    * go fmt
    
    * update parseAppArg to accept abi input (attempt)
    
    * need to check cmdline arg validity
    
    * update unmarshal from JSON in ABI type
    
    * unmarshal from json for ABI type
    
    * update ABI type unmarshal values from JSON bytes
    
    * update ABI methods for string/array/address
    
    * update unmarshal from JSON in abi
    
    * fix for error in ufixed json unmarshal
    
    * fix
    
    * update on method sub command
    
    * minor
    
    * probably better separate abi json to a single file
    
    * i just want to add a required flag plz...
    
    * minor fix on interface from json
    
    * consider some rough test cases
    
    * minor
    
    * add partition test
    
    * update static uint test
    
    * update marshal/unmarshal json methods for abi
    
    * marshal byte array to b64 string
    
    * abi json polish
    
    * update golangci lint rules
    
    * revert golangci config
    
    * update method impl
    
    * update method signature return type check
    
    * minor
    
    * copy-paste code from call app cmd
    
    * minor
    
    * add method flag to txn flags
    
    * minor
    
    * update changes
    
    * minor
    
    * moving helper functions to abi
    
    * update comments
    
    * update method app call
    
    * resolve part in abi impl
    
    * add oncomplete support
    
    * minor
    
    * try to use stringarrayvar
    
    * minor
    
    * update goal return log handing process
    
    * go simple
    
    * add a line of e2e test for now
    
    * update
    
    * minor
    
    * minor
    
    * minor
    
    * go fmt
    
    * approval/clear prog nil
    
    * discard all changes to e2d-app-cross-round, going to write separately e2e test
    
    * update e2d tests
    
    * check ret valu
    
    * use constant
    
    * resolve review partly
    
    * resolve review on code reformatting
    
    * resolve review on code reformatting, use code chunk for datadir and client
    
    * go fmt
    
    * export tuple type maker
    
    * update comments in e2e test
    
    * update filter empty string
    
    * resolve issues with JSON abi
    
    * minor
    ahangsu committed Nov 9, 2021
    Configuration menu
    Copy the full SHA
    d3bbe62 View commit details
    Browse the repository at this point in the history

Commits on Nov 13, 2021

  1. Clarify get_ex opcode docs (#3208)

    * adding missing  to opcode docs for external gets
    
    * update TEAL_opcodes.md
    barnjamin committed Nov 13, 2021
    Configuration menu
    Copy the full SHA
    3937401 View commit details
    Browse the repository at this point in the history

Commits on Nov 15, 2021

  1. Participation Key Interface (#3164)

    ## Summary
    
    * new `ParticipationRegistry` interface designed to manage keys and collect usage metrics.
    * new REST endpoints for interacting with keys.
    * improved `goal account partkeyinfo` and `goal account listpartkeys` formatting.
    
    ## Test Plan
    
    New unit and integration tests.
    winder committed Nov 15, 2021
    Configuration menu
    Copy the full SHA
    387f6a6 View commit details
    Browse the repository at this point in the history
  2. use large VMs for integration tests (#3201)

    Integration tests (specifically, e2e-go tests) seem to be having resource issues lately, so this returns integration tests to using large instances (4 cores, ~16GB RAM) after they were downsized to medium (2 cores ~8GB RAM) in #3095. Nightly integration tests are already using large VMs.
    cce committed Nov 15, 2021
    Configuration menu
    Copy the full SHA
    8441d91 View commit details
    Browse the repository at this point in the history

Commits on Nov 16, 2021

  1. ledger refactoring: fix catchpoint tracker (#3214)

    ## Summary
    
    When implementing the catchpoint tracker, I missed the re-initilization location for some of the local variables.
    This would generate incorrect catchpoint labels after a node completes a fast-catchup.
    
    #3085
    
    ## Test Plan
    
    - [x] Add unit tests
    - [x] Perform manual testing
    tsachiherman committed Nov 16, 2021
    Configuration menu
    Copy the full SHA
    eea0a75 View commit details
    Browse the repository at this point in the history

Commits on Nov 17, 2021

  1. update go mod/sum to include updated algorand/websocket (#3221)

    ## Summary
    
    This PR updates the websocket library to version 1.4.4, which includes a fix for deadlocked writers.
    tsachiherman committed Nov 17, 2021
    Configuration menu
    Copy the full SHA
    e44bdd6 View commit details
    Browse the repository at this point in the history
  2. agreement: handle pseudonode enqueueing failures (#2741)

    ## Summary
    
    This PR addresses two separate issues in the `pseudonodeNode` implementation:
    1. `pseudonodeVotesTask.execute` and `pseudonodeProposalsTask.execute ` do not handle vote verification enqueueing failures ( to the execution pool ). This could lead the the pseudonode processing go-routine being stuck.
    2. The `pseudonodeVotesTask.execute` could block forever in case the output channel is not being read from. 
    
    ## Trigger
    This issue was detected by the telemetry:
    ```
     ({num-occurances}): {telemetry error string}
     (67): pseudonode.MakeVotes call failed(attest) pseudonode input channel is full
    ```
    
    ## Test Plan
    
    Few unit tests added. More to come.
    tsachiherman committed Nov 17, 2021
    Configuration menu
    Copy the full SHA
    38329e1 View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2021

  1. goal abi method outfile checking (#3204)

    Check if the outFilename argument is passed and write to the path specified as other commands
    barnjamin committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    83ca8ec View commit details
    Browse the repository at this point in the history
  2. Merge branch 'rel/beta'

    onetechnical committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    c0d7822 View commit details
    Browse the repository at this point in the history
  3. Merge pull request #3230 from algorand/update-master-relbeta3.1.3

    Re-merge go-algorand 3.1.3-beta
    algojohnlee committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    4634e98 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    32d3f3d View commit details
    Browse the repository at this point in the history