Merge pull request #2036 from tendermint/master

Merge master to develop
This commit is contained in:
Ethan Buchman
2018-07-23 22:05:44 -04:00
committed by GitHub
12 changed files with 28 additions and 18 deletions

View File

@ -2,6 +2,10 @@
## TBA ## TBA
## 0.22.5
*July 23th, 2018*
BREAKING CHANGES: BREAKING CHANGES:
- [crypto] Refactor `tendermint/crypto` into many subpackages - [crypto] Refactor `tendermint/crypto` into many subpackages
- [libs/common] remove exponentially distributed random numbers - [libs/common] remove exponentially distributed random numbers
@ -9,10 +13,13 @@ BREAKING CHANGES:
IMPROVEMENTS: IMPROVEMENTS:
- [abci, libs/common] Generated gogoproto static marshaller methods - [abci, libs/common] Generated gogoproto static marshaller methods
- [config] Increase default send/recv rates to 5 mB/s - [config] Increase default send/recv rates to 5 mB/s
- [p2p] allow persistent peers to be private
BUG FIXES BUG FIXES
- [mempool] fixed a race condition when `create_empty_blocks=false` where a - [mempool] fixed a race condition when `create_empty_blocks=false` where a
transaction is published at an old height. transaction is published at an old height.
- [p2p] dial external IP setup by `persistent_peers`, not internal NAT IP
- [rpc] make `/status` RPC endpoint resistant to consensus halt
## 0.22.4 ## 0.22.4
@ -28,7 +35,8 @@ FEATURES:
BUG FIXES: BUG FIXES:
- [tools/tm-bench] Various fixes - [tools/tm-bench] Various fixes
- [consensus] Wait for WAL to stop on shutdown - [consensus] Wait for WAL to stop on shutdown
- [abci] Fix #1891, pending requests cannot hang when abci server dies. Previously a crash in BeginBlock could leave tendermint in broken state. - [abci] Fix #1891, pending requests cannot hang when abci server dies.
Previously a crash in BeginBlock could leave tendermint in broken state.
## 0.22.3 ## 0.22.3

View File

@ -1,4 +1,4 @@
package crypto package armor
import ( import (
"bytes" "bytes"

View File

@ -1,4 +1,4 @@
package crypto package armor
import ( import (
"testing" "testing"

View File

@ -1,4 +1,4 @@
package crypto package cryptoAmino
import ( import (
amino "github.com/tendermint/go-amino" amino "github.com/tendermint/go-amino"

View File

@ -1,4 +1,4 @@
package crypto package cryptoAmino
import ( import (
"os" "os"

View File

@ -1,4 +1,4 @@
package crypto package xsalsa20symmetric
import ( import (
"errors" "errors"

View File

@ -1,4 +1,4 @@
package crypto package xsalsa20symmetric
import ( import (
"testing" "testing"

View File

@ -78,7 +78,7 @@ type Mempool struct {
recheckCursor *clist.CElement // next expected response recheckCursor *clist.CElement // next expected response
recheckEnd *clist.CElement // re-checking stops here recheckEnd *clist.CElement // re-checking stops here
notifiedTxsAvailable bool notifiedTxsAvailable bool
txsAvailable chan bool // fires once for each height, when the mempool is not empty txsAvailable chan struct{} // fires once for each height, when the mempool is not empty
// Keep a cache of already-seen txs. // Keep a cache of already-seen txs.
// This reduces the pressure on the proxyApp. // This reduces the pressure on the proxyApp.
@ -130,7 +130,7 @@ func NewMempool(
// ensuring it will trigger once every height when transactions are available. // ensuring it will trigger once every height when transactions are available.
// NOTE: not thread safe - should only be called once, on startup // NOTE: not thread safe - should only be called once, on startup
func (mem *Mempool) EnableTxsAvailable() { func (mem *Mempool) EnableTxsAvailable() {
mem.txsAvailable = make(chan bool, 1) mem.txsAvailable = make(chan struct{}, 1)
} }
// SetLogger sets the Logger. // SetLogger sets the Logger.
@ -348,7 +348,7 @@ func (mem *Mempool) resCbRecheck(req *abci.Request, res *abci.Response) {
// TxsAvailable returns a channel which fires once for every height, // TxsAvailable returns a channel which fires once for every height,
// and only when transactions are available in the mempool. // and only when transactions are available in the mempool.
// NOTE: the returned channel may be nil if EnableTxsAvailable was not called. // NOTE: the returned channel may be nil if EnableTxsAvailable was not called.
func (mem *Mempool) TxsAvailable() <-chan bool { func (mem *Mempool) TxsAvailable() <-chan struct{} {
return mem.txsAvailable return mem.txsAvailable
} }
@ -360,7 +360,7 @@ func (mem *Mempool) notifyTxsAvailable() {
// channel cap is 1, so this will send once // channel cap is 1, so this will send once
mem.notifiedTxsAvailable = true mem.notifiedTxsAvailable = true
select { select {
case mem.txsAvailable <- true: case mem.txsAvailable <- struct{}{}:
default: default:
} }
} }

View File

@ -38,7 +38,7 @@ func newMempoolWithApp(cc proxy.ClientCreator) *Mempool {
return mempool return mempool
} }
func ensureNoFire(t *testing.T, ch <-chan bool, timeoutMS int) { func ensureNoFire(t *testing.T, ch <-chan struct{}, timeoutMS int) {
timer := time.NewTimer(time.Duration(timeoutMS) * time.Millisecond) timer := time.NewTimer(time.Duration(timeoutMS) * time.Millisecond)
select { select {
case <-ch: case <-ch:
@ -47,7 +47,7 @@ func ensureNoFire(t *testing.T, ch <-chan bool, timeoutMS int) {
} }
} }
func ensureFire(t *testing.T, ch <-chan bool, timeoutMS int) { func ensureFire(t *testing.T, ch <-chan struct{}, timeoutMS int) {
timer := time.NewTimer(time.Duration(timeoutMS) * time.Millisecond) timer := time.NewTimer(time.Duration(timeoutMS) * time.Millisecond)
select { select {
case <-ch: case <-ch:

View File

@ -283,7 +283,9 @@ func (sw *Switch) StopPeerForError(peer Peer, reason interface{}) {
if peer.IsPersistent() { if peer.IsPersistent() {
addr := peer.OriginalAddr() addr := peer.OriginalAddr()
if addr == nil { if addr == nil {
panic(fmt.Sprintf("persistent peer %v with no original address", peer)) // FIXME: persistent peers can't be inbound right now.
// self-reported address for inbound persistent peers
addr = peer.NodeInfo().NetAddress()
} }
go sw.reconnectToPeer(addr) go sw.reconnectToPeer(addr)
} }

View File

@ -27,7 +27,7 @@ type Mempool interface {
Flush() Flush()
FlushAppConn() error FlushAppConn() error
TxsAvailable() <-chan bool TxsAvailable() <-chan struct{}
EnableTxsAvailable() EnableTxsAvailable()
} }
@ -43,7 +43,7 @@ func (m MockMempool) Reap(n int) types.Txs { retur
func (m MockMempool) Update(height int64, txs types.Txs) error { return nil } func (m MockMempool) Update(height int64, txs types.Txs) error { return nil }
func (m MockMempool) Flush() {} func (m MockMempool) Flush() {}
func (m MockMempool) FlushAppConn() error { return nil } func (m MockMempool) FlushAppConn() error { return nil }
func (m MockMempool) TxsAvailable() <-chan bool { return make(chan bool) } func (m MockMempool) TxsAvailable() <-chan struct{} { return make(chan struct{}) }
func (m MockMempool) EnableTxsAvailable() {} func (m MockMempool) EnableTxsAvailable() {}
//------------------------------------------------------ //------------------------------------------------------

View File

@ -4,13 +4,13 @@ package version
const ( const (
Maj = "0" Maj = "0"
Min = "22" Min = "22"
Fix = "4" Fix = "5"
) )
var ( var (
// Version is the current version of Tendermint // Version is the current version of Tendermint
// Must be a string because scripts like dist.sh read this file. // Must be a string because scripts like dist.sh read this file.
Version = "0.22.4" Version = "0.22.5"
// GitCommit is the current HEAD set using ldflags. // GitCommit is the current HEAD set using ldflags.
GitCommit string GitCommit string