From cf337cc3f2f2e278c8e8a28df21c8a47e99b8a38 Mon Sep 17 00:00:00 2001 From: "M. J. Fromberger" Date: Mon, 11 Apr 2022 14:49:17 -0700 Subject: [PATCH] Add configuration updates for Tendermint v0.36. (#8310) * v36: remove [fastsync] and [blocksync] config sections * v36: remove [blocksync], consolidate rename * v36: remove gRPC options from [rpc] * v36: add top-level mode setting * v36: remove deprecated per-node consensus timeouts * v36: remove vestigial mempool.wal-dir setting * v36: add queue-type setting * v36: add p2p connection limits * v36: add or update statsync.fetchers * v36: add statesync.use-p2p setting --- scripts/confix/confix.go | 154 ++++++++++++++++++++++++++++++++------- 1 file changed, 126 insertions(+), 28 deletions(-) diff --git a/scripts/confix/confix.go b/scripts/confix/confix.go index b958060fe..a3e6d57bb 100644 --- a/scripts/confix/confix.go +++ b/scripts/confix/confix.go @@ -85,21 +85,138 @@ var plan = transform.Plan{ T: transform.SnakeToKebab(), }, { - // Since https://github.com/tendermint/tendermint/pull/6896. - Desc: "Rename [fastsync] to [blocksync]", - T: transform.Rename(parser.Key{"fastsync"}, parser.Key{"blocksync"}), + // [fastsync] renamed in https://github.com/tendermint/tendermint/pull/6896. + // [blocksync] removed in https://github.com/tendermint/tendermint/pull/7159. + Desc: "Remove [fastsync] and [blocksync] sections", + T: transform.Func(func(_ context.Context, doc *tomledit.Document) error { + doc.First("fast-sync").Remove() + transform.FindTable(doc, "fastsync").Remove() + transform.FindTable(doc, "blocksync").Remove() + return nil + }), ErrorOK: true, }, { - // Since https://github.com/tendermint/tendermint/pull/7159. - Desc: "Move top-level fast_sync key to blocksync.enable", - T: transform.MoveKey( - parser.Key{"fast-sync"}, - parser.Key{"blocksync"}, - parser.Key{"enable"}, + // Since https://github.com/tendermint/tendermint/pull/6241. + // + // TODO(creachadair): backport into v0.35.x. + Desc: `Add top-level mode setting (default "full")`, + T: transform.EnsureKey(nil, &parser.KeyValue{ + Block: parser.Comments{"Mode of Node: full | validator | seed"}, + Name: parser.Key{"mode"}, + Value: parser.MustValue(`"full"`), + }), + ErrorOK: true, + }, + { + // Since https://github.com/tendermint/tendermint/pull/7121. + Desc: "Remove gRPC settings from the [rpc] section", + T: transform.Func(func(_ context.Context, doc *tomledit.Document) error { + doc.First("rpc", "grpc-laddr").Remove() + doc.First("rpc", "grpc-max-open-connections").Remove() + return nil + }), + }, + { + // Since https://github.com/tendermint/tendermint/pull/8217. + Desc: "Remove per-node consensus timeouts (converted to consensus parameters)", + T: transform.Remove( + parser.Key{"consensus", "skip-timeout-commit"}, + parser.Key{"consensus", "timeout-commit"}, + parser.Key{"consensus", "timeout-precommit"}, + parser.Key{"consensus", "timeout-precommit-delta"}, + parser.Key{"consensus", "timeout-prevote"}, + parser.Key{"consensus", "timeout-prevote-delta"}, + parser.Key{"consensus", "timeout-propose"}, + parser.Key{"consensus", "timeout-propose-delta"}, ), ErrorOK: true, }, + { + // Since https://github.com/tendermint/tendermint/pull/6396. + // + // TODO(creachadair): backport into v0.35.x. + Desc: "Remove vestigial mempool.wal-dir setting", + T: transform.Remove(parser.Key{"mempool", "wal-dir"}), + ErrorOK: true, + }, + { + // Since https://github.com/tendermint/tendermint/pull/6323. + // + // TODO(creachadair): backport into v0.35.x. + Desc: "Add new [p2p] queue-type setting", + T: transform.EnsureKey(parser.Key{"p2p"}, &parser.KeyValue{ + Block: parser.Comments{"Select the p2p internal queue"}, + Name: parser.Key{"queue-type"}, + Value: parser.MustValue(`"priority"`), + }), + ErrorOK: true, + }, + { + // Since https://github.com/tendermint/tendermint/pull/6353. + // + // TODO(creachadair): backport into v0.35.x. + Desc: "Add [p2p] connection count and rate limit settings", + T: transform.Func(func(_ context.Context, doc *tomledit.Document) error { + tab := transform.FindTable(doc, "p2p") + if tab == nil { + return errors.New("p2p table not found") + } + transform.InsertMapping(tab.Section, &parser.KeyValue{ + Block: parser.Comments{"Maximum number of connections (inbound and outbound)."}, + Name: parser.Key{"max-connections"}, + Value: parser.MustValue("64"), + }, false) + transform.InsertMapping(tab.Section, &parser.KeyValue{ + Block: parser.Comments{ + "Rate limits the number of incoming connection attempts per IP address.", + }, + Name: parser.Key{"max-incoming-connection-attempts"}, + Value: parser.MustValue("100"), + }, false) + return nil + }), + }, + { + // Added "chunk-fetchers" https://github.com/tendermint/tendermint/pull/6566. + // This value was backported into v0.34.11 (modulo casing). + // Renamed to "fetchers" https://github.com/tendermint/tendermint/pull/6587. + // + // TODO(creachadair): backport into v0.35.x. + Desc: "Rename statesync.chunk-fetchers to statesync.fetchers", + T: transform.Func(func(ctx context.Context, doc *tomledit.Document) error { + // If the key already exists, rename it preserving its value. + if found := doc.First("statesync", "chunk-fetchers"); found != nil { + found.KeyValue.Name = parser.Key{"fetchers"} + return nil + } + + // Otherwise, add it. + return transform.EnsureKey(parser.Key{"statesync"}, &parser.KeyValue{ + Block: parser.Comments{ + "The number of concurrent chunk and block fetchers to run (default: 4).", + }, + Name: parser.Key{"fetchers"}, + Value: parser.MustValue("4"), + })(ctx, doc) + }), + }, + { + // Since https://github.com/tendermint/tendermint/pull/6807. + // Backported into v0.34.13 (modulo casing). + // + // TODO(creachadair): backport into v0.35.x. + Desc: "Add statesync.use-p2p setting", + T: transform.EnsureKey(parser.Key{"statesync"}, &parser.KeyValue{ + Block: parser.Comments{ + "# State sync uses light client verification to verify state. This can be done either through the", + "# P2P layer or RPC layer. Set this to true to use the P2P layer. If false (default), RPC layer", + "# will be used.", + }, + Name: parser.Key{"use-p2p"}, + Value: parser.MustValue("false"), + }), + }, { // Since https://github.com/tendermint/tendermint/pull/6462. Desc: "Move priv-validator settings under [priv-validator]", @@ -147,22 +264,6 @@ var plan = transform.Plan{ return nil }), }, - { - // v1 removed: https://github.com/tendermint/tendermint/pull/5728 - // v2 deprecated: https://github.com/tendermint/tendermint/pull/6730 - Desc: `Set blocksync.version to "v0"`, - T: transform.Func(func(_ context.Context, doc *tomledit.Document) error { - v := doc.First("blocksync", "version") - if v == nil { - return nil // nothing to do - } else if !v.IsMapping() { - // This shouldn't happen, but is easier to debug than a panic. - return fmt.Errorf("blocksync.version is weird: %v", v) - } - v.Value.X = parser.MustValue(`"v0"`).X - return nil - }), - }, } // ApplyFixes transforms doc and reports whether it succeeded. @@ -248,8 +349,5 @@ func CheckValid(data []byte) error { return fmt.Errorf("decoding config: %w", err) } - // Stub in required value not stored in the config file, so that validation - // will not fail spuriously. - cfg.Mode = config.ModeValidator return cfg.ValidateBasic() }