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.1-stable #3279

Merged
merged 146 commits into from
Dec 7, 2021
Merged

go-algorand 3.2.1-stable #3279

merged 146 commits into from
Dec 7, 2021

Commits on Sep 15, 2021

  1. Configuration menu
    Copy the full SHA
    9fe1bf4 View commit details
    Browse the repository at this point in the history

Commits on Sep 16, 2021

  1. use matrix for CircleCI config (#2864)

    Based on the matrix job @algojack added in #2749, this turns the other per-platform jobs into matrix jobs too. The most significant change in this PR is switching from building in the home directory (/home/circleci on Linux and /Users/distiller on Mac) to instead build out of /opt/cibuild to make it easier for the matrix jobs to share configuration.
    cce committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    bc46c94 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4b67562 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2021

  1. Add indexerLedgerForEval interface (#2897)

    Add a new ledger interface for Indexer that is significantly simpler and allows implementing batching in a more straight-forward way. As a result, the Indexer code doesn't need to know the specifics of go-algorand and doesn't need to implement its own accounts cache for batching.
    tolikzinovyev committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    275e1f3 View commit details
    Browse the repository at this point in the history
  2. Fix random failures TestWaitAndAddConnectionTimeLongtWindow (#2903)

    TestWaitAndAddConnectionTimeLongtWindow is randomly failing when the execution of time sensitive statements is separated by more than the expected time gap.
    
    This issue is fixed by replacing the sleep with simulated time passing by changing the recorded time, thus giving the impression that the event happened timeout time ago.
    algonautshant committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    dbab85f View commit details
    Browse the repository at this point in the history

Commits on Sep 20, 2021

  1. Fix unit test (#2926)

    The unit test TestLatestSigsFromThisNode was data racing. The fix is trivial.
    tsachiherman committed Sep 20, 2021
    Configuration menu
    Copy the full SHA
    83837ac View commit details
    Browse the repository at this point in the history

Commits on Sep 21, 2021

  1. ledger: move account totals calculation to StateDelta (#2922)

    ## Summary
    
    The account totals are being tested once every round to ensure that the total amount of money in the system doesn't change. Prior to this PR, the accounts update newBlock method was responsible for testing that : this would ensure that we're not writing a new round to disk that violates the totals predicate.
    
    While this was working correctly, conducting this test at the time we're writing this information to the disk is too late. By that time, we've already agreed upon applying this (problematic) block to disk. Ideally, we could detect this situation ahead of time, and avoid agreeing on a block which would violate the totals predicate.
    
    In this PR, we've moving the totals calculation as the last step of the delta state calculation. Few thoughts:
    - From security perspective, it's just as secured, since the StateDeltas are always in-process and never shared across the network.
    - From agreement perspective - in case we have a bug in the evaluator that would cause it to generate a state deltas that would violate the totals predicate, the evaluator is going to fail assembling the state deltas on the generator, validator and applicator ( i.e. "consumer" ). Ideally, in the future, we would be able to propose the empty block in such case, allowing the problematic transactions to time-out.
    - From code-flow perspective - this seem to be a much better approach: a failure to store the block to the disk has only one potential outcome - panicking. Having the ability to detect that the state delta is invalid would give us a way out of that.
    
    ## Test Plan
    
    1. Unit tests updated.
    2. Tested against mainnet : catchup from scratch to force validation of the entire blockchain.
    tsachiherman committed Sep 21, 2021
    Configuration menu
    Copy the full SHA
    5c0de9c View commit details
    Browse the repository at this point in the history
  2. Support arm cross compile (#2923)

    ## Summary
    
    This PR is to take advantage of arm64's ability to run arm32 binaries. Using this, we are able to build for arm32 on arm64 hosts by running containers with arm32 OS's on them. This is much faster than our qemu set up because it doesn't rely on emulations. The binaries produced with this process work and the arm64/arm32 build times are as fast as the intel builds, reducing our build time by about an hour.
    
    ## Test Plan
    
    I ran our build pipeline against this branch using arm64 hosts and tested the produced artifacts using emulated cpu's to make sure they still work on their native architectures.
    Tested manually on raspberry pi 2 model b, and it's working as expected.
    bricerisingalgorand committed Sep 21, 2021
    Configuration menu
    Copy the full SHA
    e9900a3 View commit details
    Browse the repository at this point in the history
  3. Rotate Travis Env Variables and Remove codecov Env variable (#2934)

    Rotated slack token in environment variable and removed the codecov token from Travis file. codecov token is removed because it's not needed for public repos.
    algobarb committed Sep 21, 2021
    Configuration menu
    Copy the full SHA
    01d853f View commit details
    Browse the repository at this point in the history

Commits on Sep 22, 2021

  1. TestRequestBlockBytesErrors: Various fixes (#2928)

    ## Summary
    
    <!-- Explain the goal of this change and what problem it is solving. Format this cleanly so that it may be used for a commit message, as your changes will be squash-merged. -->
    
    The test TestRequestBlockBytesErrors has failed, and the reason is unidentifiable.
    Various fixes are here, including more verbose error reporting to identify the issue when it occurs again.
    
    - Add waitgrop to ledger to wait before closing the ledger and blockQ when goroutines are using them.
    - In universalFetcher, return the error immediately in case of an error.
    - Proper closing of objects in TestRequestBlockBytesErrors, and more verbose error reporting.
    
    
    The waitGroup is needed for the following situation:
    
    in blockService.go listenForCatchupReq
    
    When, immediately after calling `bq.handleCatchupReq`, `BlockService.Stop()` is called, `blockQueue` will be `nil` by the time `blockQueue.getEncodedBlockCert` is called. 
    ```
    
    0  0x0000000004e16846 in github.com/algorand/go-algorand/ledger.(*blockQueue).checkEntry
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/ledger/blockqueue.go:215
    1  0x0000000004e174a9 in github.com/algorand/go-algorand/ledger.(*blockQueue).getEncodedBlockCert
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/ledger/blockqueue.go:295
    2  0x0000000004e3a2a7 in github.com/algorand/go-algorand/ledger.(*Ledger).EncodedBlockCert
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/ledger/ledger.go:516
    3  0x0000000004f46eed in github.com/algorand/go-algorand/rpcs.topicBlockBytes
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/rpcs/blockService.go:355
    4  0x0000000004f45e1b in github.com/algorand/go-algorand/rpcs.(*BlockService).handleCatchupReq
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/rpcs/blockService.go:299
    5  0x0000000004f45318 in github.com/algorand/go-algorand/rpcs.(*BlockService).listenForCatchupReq
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/rpcs/blockService.go:245
    
    ```
    
    ## Test Plan
    Test is enhanced. 
    <!-- How did you test these changes? Please provide the exact scenarios you tested in as much detail as possible including commands, output and rationale. -->
    algonautshant committed Sep 22, 2021
    Configuration menu
    Copy the full SHA
    e4842fc View commit details
    Browse the repository at this point in the history
  2. Remove time ledger tracker as not used (#2937)

    Remove time ledger tracker as not used.
    algorandskiy committed Sep 22, 2021
    Configuration menu
    Copy the full SHA
    8b0dda7 View commit details
    Browse the repository at this point in the history
  3. readme grammar change (#2938)

    fix a typo.
    yaovi-a committed Sep 22, 2021
    Configuration menu
    Copy the full SHA
    e69b10d View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2021

  1. fix EvalForIndexer (#2941)

    Summary
    In the EvalForIndexer, we don't want to call finalValidation(). This would
    skip the calculation of the account totals in the state delta, which is a serious
    issue if it were to be used by algod, but it's perfectly fine for the indexer since
    it doesn't track any totals and therefore cannot calculate the new totals.
    
    Test Plan
    Test against the indexer.
    tsachiherman committed Sep 23, 2021
    Configuration menu
    Copy the full SHA
    e4fbb1d View commit details
    Browse the repository at this point in the history
  2. Cache creators in cow base. (#2939)

    The evaluator shouldn't ask the ledger who is the creator of an asset multiple times. This PR adds a cache for ledger's responses in cow base.
    tolikzinovyev committed Sep 23, 2021
    Configuration menu
    Copy the full SHA
    a196929 View commit details
    Browse the repository at this point in the history
  3. testing: fix TestLatestSigsFromThisNode (#2940)

    Timing issues between writing to and reading from the database cause the test to occasionally fail.
    Make the test more tolerant to such timing issues by polling.
    algonautshant committed Sep 23, 2021
    Configuration menu
    Copy the full SHA
    ee0a715 View commit details
    Browse the repository at this point in the history

Commits on Sep 25, 2021

  1. Add ABI encoding support (#2807)

    Encoding/Decoding method for ABI Values.
    Serialization/Deserialization of ABI Types.
    Make/Get methods for ABI Types/Values.
    Basic testcases for Encoding/Decoding.
    ahangsu committed Sep 25, 2021
    Configuration menu
    Copy the full SHA
    7451e3e View commit details
    Browse the repository at this point in the history
  2. e2e tests for log (#2950)

    * moving logs e2e to scripts
    shiqizng committed Sep 25, 2021
    Configuration menu
    Copy the full SHA
    2faace9 View commit details
    Browse the repository at this point in the history
  3. Add application account into a dryrun req created by goal (#2945)

    AVM 1.0 introduces application accounts
    goal clerk needs to consider this account when creates dryrun request object
    Added a new option --dryrun-accounts for adding accounts that were rekeyed to an app account (or any other accounts).
    algorandskiy committed Sep 25, 2021
    Configuration menu
    Copy the full SHA
    073717e View commit details
    Browse the repository at this point in the history

Commits on Sep 27, 2021

  1. e2e tests for axfer, acfg, and afrz inner txns (#2947)

    Similar to app-accounts test, but tests all sorts of asset txns instead of pays.
    shiqizng committed Sep 27, 2021
    Configuration menu
    Copy the full SHA
    7991a84 View commit details
    Browse the repository at this point in the history
  2. Lots of testing convenience improvements, including e2e python (#2936)

    Made it nice to write e2e test in python by creating a "goal" module
    that emulates the convenience of goal, but in python so that
    structured results come out for easy asserts.
    jannotti committed Sep 27, 2021
    Configuration menu
    Copy the full SHA
    96b16ff View commit details
    Browse the repository at this point in the history

Commits on Sep 28, 2021

  1. Enable cost and fee pooling in tealdbg (#2954)

    * Enable cost and fee pooling in tealdbg
    
    * CR fixes
    algorandskiy committed Sep 28, 2021
    Configuration menu
    Copy the full SHA
    e40b7ef View commit details
    Browse the repository at this point in the history
  2. testing: metrics_delta.py fixes (#2962)

    Fixes found during recent cluster bandwidth testing
    brianolson committed Sep 28, 2021
    Configuration menu
    Copy the full SHA
    412aef5 View commit details
    Browse the repository at this point in the history

Commits on Sep 29, 2021

  1. ledger: refactor the ledger Totals (#2846)

    ## Summary
    
    The plan to change the tracker database to maintain the latest 320 rounds for the online accounts only have some other required modification; one of them is the semantics of the `Totals` method:
    - At this time, it supports retrieving `AccountTotals` for any of the recent 320 rounds.
    - We need the method to support the `AccountTotals` for the latest round only, as well as provide the circulating supply for latest-320 rounds ( i.e. the circulating supply is a subset of the `AccountTotals` ).
    
    Once the database implementation is complete, the database would contain the `AccountTotals` information for the latest round only, plus the online circulation for the past 320 rounds.
    
    In order to support that, I've broken up the interface into:
    - `LatestTotals`, which would return the latest totals as well as the latest round associated with these totals.
    - `OnlineTotals`, which receive a round number and return the online totals associated with that round.
    
    This change is focused around the Ledger interface. Further changes would be required in the accounts update before the high-level goals could be achieved.
    
    ## Test Plan
    
    Unit tests updated.
    tsachiherman committed Sep 29, 2021
    Configuration menu
    Copy the full SHA
    1202d32 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7f3180a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    16de1d8 View commit details
    Browse the repository at this point in the history
  4. Merge pull request #2971 from algorand/release3.0.1-mergeback-manual

    Release3.0.1 mergeback manual
    algojohnlee committed Sep 29, 2021
    Configuration menu
    Copy the full SHA
    734e727 View commit details
    Browse the repository at this point in the history

Commits on Sep 30, 2021

  1. fix flaky axfer txn e2e test (#2973)

    lower acct bal so it receives no reward
    shiqizng committed Sep 30, 2021
    Configuration menu
    Copy the full SHA
    4ed1d8e View commit details
    Browse the repository at this point in the history
  2. Extended logic eval error (#2975)

    Return a bit more details on eval failure for app calls.
    algorandskiy committed Sep 30, 2021
    Configuration menu
    Copy the full SHA
    fbd75f7 View commit details
    Browse the repository at this point in the history

Commits on Oct 2, 2021

  1. Start work on Teal 6 (AVM 1.1) (#2974)

    Start work on Teal 6 (AVM 1.1)
    
     vFuture, LogicVersion changed to 6
     Support RekeyTo field, and Keyreg transactions
    jannotti committed Oct 2, 2021
    Configuration menu
    Copy the full SHA
    f17f73e View commit details
    Browse the repository at this point in the history

Commits on Oct 4, 2021

  1. transaction sync (#2718)

    ## Summary
    
    This PR implements the transaction sync 2.0.
    
    More details can be found in the design document and the feature presentation .
    
    ## Test Plan
    
    Unit tests, e2e tests and performance tests were executed against this branch successfully.
    
    ## Reviewer notes
    
    This PR is pretty large. Consider reviewing it in browsers other than Safari.
    tsachiherman committed Oct 4, 2021
    Configuration menu
    Copy the full SHA
    69aace5 View commit details
    Browse the repository at this point in the history

Commits on Oct 5, 2021

  1. Configuration menu
    Copy the full SHA
    0b99cf8 View commit details
    Browse the repository at this point in the history

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. 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 authored and algojack committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    83740b4 View commit details
    Browse the repository at this point in the history
  6. 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
  7. 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. 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
    1e87c71 View commit details
    Browse the repository at this point in the history
  6. 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
  7. Merge pull request #2995 from Algo-devops-service/relbeta3.1.0

    go-algorand 3.1.0-beta
    algojohnlee committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    abd31a2 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
  2. 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
    98d25e2 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    fd82cd9 View commit details
    Browse the repository at this point in the history
  4. Merge pull request #3079 from Algo-devops-service/relbeta3.1.0

    Fixing CircleCI deploy for Betanet and Stablenet (#3077)
    algojohnlee committed Oct 15, 2021
    Configuration menu
    Copy the full SHA
    a4cfa1f 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
  3. 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 authored and algojack committed Oct 18, 2021
    Configuration menu
    Copy the full SHA
    d286fd2 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    9d0cedb View commit details
    Browse the repository at this point in the history
  5. Merge pull request #3090 from algorand/rel/beta-3.1.1

    3.1.1 hotfix
    algojohnlee committed Oct 18, 2021
    Configuration menu
    Copy the full SHA
    dbd0ec9 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. 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 authored and onetechnical committed Oct 20, 2021
    Configuration menu
    Copy the full SHA
    facfb03 View commit details
    Browse the repository at this point in the history
  3. Bump build number

    onetechnical committed Oct 20, 2021
    Configuration menu
    Copy the full SHA
    2eb56bb View commit details
    Browse the repository at this point in the history
  4. 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
  5. 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
  6. Merge pull request #3103 from algorand/rel/beta-3.1.2

    go-algorand v3.1.2-beta
    algojohnlee committed Oct 20, 2021
    Configuration menu
    Copy the full SHA
    53cf013 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. 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 authored and onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    ff71d92 View commit details
    Browse the repository at this point in the history
  2. 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 authored and onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    83031f6 View commit details
    Browse the repository at this point in the history
  3. 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 authored and onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    f65e269 View commit details
    Browse the repository at this point in the history
  4. 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 authored and onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    5fc9a5e View commit details
    Browse the repository at this point in the history
  5. 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 authored and onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    05673ad View commit details
    Browse the repository at this point in the history
  6. 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
  7. 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
  8. 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
  9. 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 authored and onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    cc801ba View commit details
    Browse the repository at this point in the history
  10. 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 authored and onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    b79856f View commit details
    Browse the repository at this point in the history
  11. Bump buildnumber.dat

    onetechnical committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    615fee2 View commit details
    Browse the repository at this point in the history

Commits on Oct 26, 2021

  1. Merge pull request #3139 from algorand/rel/beta-3.1.3

    go-algorand v3.1.3-beta
    algojohnlee committed Oct 26, 2021
    Configuration menu
    Copy the full SHA
    378816d View commit details
    Browse the repository at this point in the history
  2. 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
  3. 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

Commits on Nov 19, 2021

  1. Configuration menu
    Copy the full SHA
    9905421 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0b0f97b View commit details
    Browse the repository at this point in the history

Commits on Nov 22, 2021

  1. Support transaction arguments for goal app method (#3233)

    * Implement transactions as arguments
    
    * Fix indexing and dryrun issue
    
    * Add docstring
    
    * Satisfy review dog
    
    * Fix pointer issue
    
    * Fix group command
    
    * Rename e2e test
    
    * Fix filename variable
    
    * Add e2e test
    
    * Use tab
    jasonpaulos committed Nov 22, 2021
    Configuration menu
    Copy the full SHA
    116c06e View commit details
    Browse the repository at this point in the history
  2. CI: use libboost-math-dev instead of libboost-all-dev (#3223)

    ## Summary
    
    Small change: libboost-math-dev requires just 4 packages to install, while libboost-all-dev requires > 100. Only Debian/Ubuntu distributions provide fine-grained boost packages like this, but should shave a little time off the CI builds. (Our only boost include is boost/math/distributions/binomial.hpp.)
    
    ## Test Plan
    
    Builds should pass as before. Now that we are no longer using Travis for Linux builds, the side effect of libboost-all-dev installing make and other missing build tools on Travis encountered in #2717 is no longer a concern.
    cce committed Nov 22, 2021
    Configuration menu
    Copy the full SHA
    9807eab View commit details
    Browse the repository at this point in the history

Commits on Nov 23, 2021

  1. testing: fixes to rest-participation-key e2e test (#3238)

    ## Summary
    
    - Test to make sure RES has the right input before counting line numbers for result size.
    - Rest RES to empty so that the same output is not recycled in case of an error.
    - exit 1 in case of an error
    - Reduce LAST_ROUND from 1200000 to 120
    - "Get List of Keys" before getting NUM_IDS_3 otherwise it will recycle old RES value.
    algonautshant committed Nov 23, 2021
    Configuration menu
    Copy the full SHA
    6cb3a52 View commit details
    Browse the repository at this point in the history
  2. testing: interactive mode for e2e testing (#3227)

    
    ## Summary
    Some e2e tests require a python environment for testing.
    Unfortunately, setting up that environment adequately similar to the testing environment may not be trivial.
    This change introduces an interactive mode to the e2e.sh script which stops at the point of running the tests, and allows the user to run the tests from the same testing environment.
    
    
    ## Test Plan
    No tests needed. Tested the script locally.
    algonautshant committed Nov 23, 2021
    Configuration menu
    Copy the full SHA
    52b528b View commit details
    Browse the repository at this point in the history
  3. Merge pull request #3231 from Algo-devops-service/relbeta3.2.0

    go-algorand 3.2.0-beta
    algojohnlee committed Nov 23, 2021
    Configuration menu
    Copy the full SHA
    8aa0728 View commit details
    Browse the repository at this point in the history

Commits on Nov 29, 2021

  1. Make dev-mode tests less flaky. (#3252)

    ## Summary
    
    Fix a couple flaws in the new go-e2e tests built ontop of DevMode:
    * Shutdown the fixture when finished.
    * Don't run in parallel.
    * Longer delays / better algorithms to wait for data flushing to complete.
    * Check for "out of order" keys.
    
    ## Test Plan
    
    N/A, this is a test.
    winder committed Nov 29, 2021
    Configuration menu
    Copy the full SHA
    597fc63 View commit details
    Browse the repository at this point in the history
  2. adding libtool to ubuntu deps (#3251)

    ## Summary
    
    The sandbox is not building with dev config using master branch algorand/sandbox#85, complains about libtool not being installed
    
    Guessing from this change #3223 
    
    Adding libtool to UBUNTU_DEPS in install scripts
    
    ## Test Plan
    
    Set config in sandbox to my branch
    `sandbox up dev`
    It built
    barnjamin committed Nov 29, 2021
    Configuration menu
    Copy the full SHA
    5339cf0 View commit details
    Browse the repository at this point in the history

Commits on Nov 30, 2021

  1. Fix error shadowing in Eval (#3258)

    ## Summary
    
    Error from account preloading was shadowed by returning a wrong err variable. This caused subsequent problems in account updates and masked the original failure.
    
    ## Test Plan
    
    Use existing tests
    algorandskiy committed Nov 30, 2021
    Configuration menu
    Copy the full SHA
    715f511 View commit details
    Browse the repository at this point in the history
  2. Disable flaky test. (#3256)

    ## Summary
    
    This test doesn't work properly, disable it until #3255 addresses any underlying problems.
    winder committed Nov 30, 2021
    Configuration menu
    Copy the full SHA
    54db1c7 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4e34eba View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    305d7ab View commit details
    Browse the repository at this point in the history

Commits on Dec 2, 2021

  1. Merge pull request #3260 from Algo-devops-service/relbeta3.2.1

    go-algorand 3.2.1-beta
    algojohnlee committed Dec 2, 2021
    Configuration menu
    Copy the full SHA
    2baf39b View commit details
    Browse the repository at this point in the history