mirror of
https://github.com/fluencelabs/tendermint
synced 2025-07-30 11:41:55 +00:00
Compare commits
8 Commits
josef/chec
...
v0.31
Author | SHA1 | Date | |
---|---|---|---|
|
cb7aea79db | ||
|
bb9ee2ca28 | ||
|
fe54b3323c | ||
|
7924c76815 | ||
|
e2775ba0e3 | ||
|
8fb2c2a0e8 | ||
|
65a3dfe235 | ||
|
77e711f70b |
27
CHANGELOG.md
27
CHANGELOG.md
@@ -1,5 +1,32 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
*July 29, 2019*
|
||||||
|
|
||||||
|
This releases fixes one bug in the PEX reactor and adds a `recover` to the Go's
|
||||||
|
ABCI server, which allows it to properly cleanup.
|
||||||
|
|
||||||
|
### IMPROVEMENTS:
|
||||||
|
- [abci] \#3809 Recover from application panics in `server/socket_server.go` to allow socket cleanup (@ruseinov)
|
||||||
|
|
||||||
|
### BUG FIXES:
|
||||||
|
- [p2p] \#3338 Prevent "sent next PEX request too soon" errors by not calling
|
||||||
|
ensurePeers outside of ensurePeersRoutine
|
||||||
|
|
||||||
|
## v0.31.7
|
||||||
|
|
||||||
|
*June 3, 2019*
|
||||||
|
|
||||||
|
This releases fixes a regression in the mempool introduced in v0.31.6.
|
||||||
|
The regression caused the invalid committed txs to be proposed in blocks over and
|
||||||
|
over again.
|
||||||
|
|
||||||
|
### BUG FIXES:
|
||||||
|
- [mempool] \#3699 Remove all committed txs from the mempool.
|
||||||
|
This reverts the change from v0.31.6 where we only remove valid txs from the mempool.
|
||||||
|
Note this means malicious proposals can cause txs to be dropped from the
|
||||||
|
mempools of other nodes by including them in blocks before they are valid.
|
||||||
|
See \#3322.
|
||||||
|
|
||||||
## v0.31.6
|
## v0.31.6
|
||||||
|
|
||||||
*May 31st, 2019*
|
*May 31st, 2019*
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
## v0.31.7
|
## v0.31.8
|
||||||
|
|
||||||
**
|
**
|
||||||
|
|
||||||
@@ -19,5 +19,3 @@
|
|||||||
### IMPROVEMENTS:
|
### IMPROVEMENTS:
|
||||||
|
|
||||||
### BUG FIXES:
|
### BUG FIXES:
|
||||||
- [mempool] \#3699 Revert the change where we only remove valid transactions
|
|
||||||
from the mempool once a block is committed.
|
|
||||||
|
@@ -146,6 +146,16 @@ func (s *SocketServer) waitForClose(closeConn chan error, connID int) {
|
|||||||
func (s *SocketServer) handleRequests(closeConn chan error, conn net.Conn, responses chan<- *types.Response) {
|
func (s *SocketServer) handleRequests(closeConn chan error, conn net.Conn, responses chan<- *types.Response) {
|
||||||
var count int
|
var count int
|
||||||
var bufReader = bufio.NewReader(conn)
|
var bufReader = bufio.NewReader(conn)
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
// make sure to recover from any app-related panics to allow proper socket cleanup
|
||||||
|
r := recover()
|
||||||
|
if r != nil {
|
||||||
|
closeConn <- fmt.Errorf("recovered from panic: %v", r)
|
||||||
|
s.appMtx.Unlock()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
|
||||||
var req = &types.Request{}
|
var req = &types.Request{}
|
||||||
@@ -154,7 +164,7 @@ func (s *SocketServer) handleRequests(closeConn chan error, conn net.Conn, respo
|
|||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
closeConn <- err
|
closeConn <- err
|
||||||
} else {
|
} else {
|
||||||
closeConn <- fmt.Errorf("Error reading message: %v", err.Error())
|
closeConn <- fmt.Errorf("error reading message: %v", err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@@ -340,6 +340,15 @@ func (r *PEXReactor) ReceiveAddrs(addrs []*p2p.NetAddress, src Peer) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
srcIsSeed := false
|
||||||
|
for _, seedAddr := range r.seedAddrs {
|
||||||
|
if seedAddr.Equals(srcAddr) {
|
||||||
|
srcIsSeed = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, netAddr := range addrs {
|
for _, netAddr := range addrs {
|
||||||
// Validate netAddr. Disconnect from a peer if it sends us invalid data.
|
// Validate netAddr. Disconnect from a peer if it sends us invalid data.
|
||||||
if netAddr == nil {
|
if netAddr == nil {
|
||||||
@@ -365,13 +374,23 @@ func (r *PEXReactor) ReceiveAddrs(addrs []*p2p.NetAddress, src Peer) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If this address came from a seed node, try to connect to it without
|
// If this address came from a seed node, try to connect to it without
|
||||||
// waiting.
|
// waiting (#2093)
|
||||||
for _, seedAddr := range r.seedAddrs {
|
if srcIsSeed {
|
||||||
if seedAddr.Equals(srcAddr) {
|
r.Logger.Info("Will dial address, which came from seed", "addr", netAddr, "seed", srcAddr)
|
||||||
r.ensurePeers()
|
go func(addr *p2p.NetAddress) {
|
||||||
}
|
err := r.dialPeer(addr)
|
||||||
|
if err != nil {
|
||||||
|
switch err.(type) {
|
||||||
|
case errMaxAttemptsToDial, errTooEarlyToDial:
|
||||||
|
r.Logger.Debug(err.Error(), "addr", addr)
|
||||||
|
default:
|
||||||
|
r.Logger.Error(err.Error(), "addr", addr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}(netAddr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@ const (
|
|||||||
// Must be a string because scripts like dist.sh read this file.
|
// Must be a string because scripts like dist.sh read this file.
|
||||||
// XXX: Don't change the name of this variable or you will break
|
// XXX: Don't change the name of this variable or you will break
|
||||||
// automation :)
|
// automation :)
|
||||||
TMCoreSemVer = "0.31.5"
|
TMCoreSemVer = "0.31.8"
|
||||||
|
|
||||||
// ABCISemVer is the semantic version of the ABCI library
|
// ABCISemVer is the semantic version of the ABCI library
|
||||||
ABCISemVer = "0.16.0"
|
ABCISemVer = "0.16.0"
|
||||||
|
Reference in New Issue
Block a user