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

Merge master into feature/1000-assets #2224

Merged

Conversation

algorandskiy
Copy link
Contributor

No description provided.

algorandskiy and others added 30 commits March 16, 2021 16:51
Most of the new TEAL 3 features already work with the debugger, but a few changes were needed to make the new array fields display properly on the Chrome frontend.
expand unit test
e2e test runner : skip printing the logs when program is in terminated state.
Based on review comments, pushing down these for more fine tuned configuration and to eliminate the reuse of the fetcher.
tsachiherman and others added 26 commits May 25, 2021 14:07
Temporarily disable expect tests, as the failures there are blocking out testing.
Add a lot of math oriented opcodes that have been requested by teal users.

sqrt, exp, expw, divmodw

byteslice oriented math - a set of opcodes that will treat byteslices as arbitrary precision uints.
The previous fix for this test (algorand#2178) was incomplete. It did not included proper handling for the case of round 0.
This PR addresses this corner case.
## Summary

This PR contains three different changes that would allow the node to start up faster:
1. It disables the block 0 fix we previously deployed. This fix was intended to address catching up archival nodes, where we would calculate the block 0 hash incorrectly. The fix was long deployed, and the hash calculation is also fixed since.
2. The tracker and blocks databases are now being opened concurrently.
3. The accounts tracker database schema upgrade would now skip some of the steps that aren't required for a fresh database.

Combining all the above, the ledger startup of a new node is now about 2-3 times faster.

## Test Plan

This change has no functional enduser change. The existing tests provide sufficient coverage.
Unit tests to improve the test code coverage in peerSelector and catchup/service
peerSelector.go 100% coverage
catchup/service.go ~69%
Adding missing test for universalFetcher.go

Code coverage increased from 74%->96%
…utdown (algorand#2181)

<!--
Thanks for submitting a pull request! We appreciate the time and effort you spent to get this far.

If you haven't already, please make sure that you've reviewed the CONTRIBUTING guide:
https://github.com/algorand/go-algorand/blob/master/CONTRIBUTING.md#code-guidelines

In particular ensure that you've run the following:
* make generate
* make sanity (which runs make fmt, make lint, make fix and make vet)

It is also a good idea to run tests:
* make test
* make integration
-->

## Summary

Fix race [reported here](https://github.com/algorand/go-algorand-internal/issues/1268):
```
Read at 0x00c00675ed48 by goroutine 210:
  github.com/algorand/go-algorand/network.(*WebsocketNetwork).ServeHTTP()
      /home/travis/gopath/src/github.com/algorand/go-algorand/network/wsNetwork.go:1114 +0x19ad
  github.com/gorilla/mux.(*Router).ServeHTTP()
      /home/travis/gopath/pkg/mod/github.com/gorilla/[email protected]/mux.go:162 +0x193
  github.com/algorand/go-algorand/network.(*RequestTracker).ServeHTTP()
      /home/travis/gopath/src/github.com/algorand/go-algorand/network/requestTracker.go:474 +0x77b
  net/http.serverHandler.ServeHTTP()
      /home/travis/.gimme/versions/go1.14.7.linux.amd64/src/net/http/server.go:2836 +0xce
  net/http.(*conn).serve()
      /home/travis/.gimme/versions/go1.14.7.linux.amd64/src/net/http/server.go:1924 +0x837
Previous write at 0x00c00675ed48 by goroutine 79:
  github.com/algorand/go-algorand/network.(*WebsocketNetwork).Stop()
      /home/travis/gopath/src/github.com/algorand/go-algorand/network/wsNetwork.go:855 +0x265
  github.com/algorand/go-algorand/network.TestGetPeers()
      /home/travis/gopath/src/github.com/algorand/go-algorand/network/wsNetwork_test.go:977 +0xe1d
  testing.tRunner()
      /home/travis/.gimme/versions/go1.14.7.linux.amd64/src/testing/testing.go:1039 +0x1eb

```

## Test Plan

The CI should run this test. I don't think the flaky test runs on pull requests right now, but it should run during the nightly builds. 

The race is not reproducible on my system. Running this before and after the test does not report any errors (until a 10 minute timeout):
```
$ gotestsum --format testname -- -tags "sqlite_unlock_notify sqlite_omit_load_extension osusergo netgo static_build" -race github.com/algorand/go-algorand/network -run TestGetPeers -count 1000000000
```
Recently the build tooling was updated in algorand#2108 which split out the installation of Go tools golint, stringer, swagger, msgp into a separate script install_buildtools.sh. This updates the README to reflect that in the environment setup instructions.
…lgorand#2197)

run some independent commands in parallel, total test 230s -> 170s
`20210526_115456 :179 finished e2e_subs/sectok-app.sh OK in 235.471021 seconds`
down to
`20210526_122739 :179 finished e2e_subs/sectok-app.sh OK in 169.771514 seconds`
When you run goal wallet new there is a confusing warning ("One or more non-printable characters ...") presented just before the backup phrase, which is displayed between some sanitized ANSI codes. This is due to security improvements in algorand#1585 to prevent goal from printing control characters. This PR removes the ANSI color formatting altogether from the infoBackupPhrase (already done for Windows in algorand#1942), which is one simple way to clean up this output and remove the warning message.
The TestApplicationsUpgradeOverREST e2e had a bug in the testing code -
if the upgrade takes place before the broadcast takes place, the broadcast result could be non-err.
This PR ensures that if we get a non-error, we have already upgraded.
…6.0-remerge

go-algorand relstable2.6.0-remerge
debug tools: improve carpenter by adding timestamp
…se. (algorand#2206)

The e2e test TestRewardUnitThreshold was failing on this statement:
```golang
r.Truef(latestBalanceNewAccount.PendingRewards >= (initialBalanceNewAccount+amountRichAccountPokesWith)/rewardUnit, "new account should have pending rewards (e2e)")
```

I replaces the `r.Truef` with `r.GreaterOrEqualf` to get the values off when it fails.
( I wan't able to reproduce it, so I figured getting some extra info for the next time would be helpful )
While talking to @tsachiherman we noticed stray fmt'd files in my repo after running make sanity, and he suggested submitting a fix PR. I discovered this shell line generated a list of gofiles that is always empty, probably because the way we set up builds for branches (and vendoring) has changed since it was written.
…d#2216)

Two small improvements recommended during CR of teal4-math
Allow paying for more program space.
This change allows contract to contract composability by allowing future app call transactions to read the scratch space of previous transactions. This allows smart contracts to expose side effects for future application calls, such as a price oracle returning the exchange rate of a particular asset pair.

Changes include:

Adding PastSideEffects fields to EvalParams.
gload and gloads docs.
…ight expire. (algorand#2203)

Refresh wallet handle after waiting for series of rounds, as handle might expire
When a relay receives a proposal for a future round, the proposal fails to be relayed. This change fixes that by sending it when the agreement advances to the corresponding round.
Fix issue cp: cannot create regular file 'gen/devnet/genesis.json': No such file or directory by creating a directory if it doesn't exist to store the genesis file. Changed the reference genesis.json file to installer/genesis/ path.
@algorandskiy algorandskiy requested a review from tsachiherman June 2, 2021 00:18
@algorandskiy
Copy link
Contributor Author

For some reason git failed to find a common accessor that would be ~50 commits back after #2069. So it re-merged everything from the point where master and feature/1000-assets diverged.

Copy link
Contributor

@tsachiherman tsachiherman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pretty big PR

@tsachiherman tsachiherman merged commit 5aff57e into algorand:feature/1000-assets Jun 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.