mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-14 13:51:21 +00:00
Merge pull request #2036 from tendermint/master
Merge master to develop
This commit is contained in:
10
CHANGELOG.md
10
CHANGELOG.md
@ -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
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package crypto
|
package armor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package crypto
|
package armor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package crypto
|
package cryptoAmino
|
||||||
|
|
||||||
import (
|
import (
|
||||||
amino "github.com/tendermint/go-amino"
|
amino "github.com/tendermint/go-amino"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package crypto
|
package cryptoAmino
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package crypto
|
package xsalsa20symmetric
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
@ -1,4 +1,4 @@
|
|||||||
package crypto
|
package xsalsa20symmetric
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@ -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:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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:
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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() {}
|
||||||
|
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user