GreatVoyage-v4.8.2 configuration migration
Migrate custom node settings to GreatVoyage-v4.8.2 and review its added, changed, and removed configuration keys.
This page is for node operators upgrading from an older java-tron release to GreatVoyage-v4.8.2. For a new deployment, use the configuration that matches the version being run and follow Deploy a node.
Migration workflow
Do not reuse an older config.conf unchanged. Instead:
- Back up the old configuration and record its custom settings.
- Start from the
config.confat the GreatVoyage-v4.8.2 tag and merge each custom setting that remains valid. - Add or override new settings as needed, and remove obsolete settings according to the table below.
- Check defaults and field types against the GreatVoyage-v4.8.2
reference.conf. - Validate node startup, APIs, P2P connectivity, event subscription, and monitoring in a test environment before upgrading production nodes.
Configuration changes
| Type | Configuration | GreatVoyage-v4.8.2 behavior and migration guidance |
|---|---|---|
| Added | vm.constantCallTimeoutMs | Sets an independent TVM constant-call timeout in milliseconds for paths such as triggerconstantcontract, estimateenergy, eth_call, and eth_estimateGas. The default is 0, which preserves the existing execution deadline; any configured value must be non-negative. Do not use --debug, which also extends block-transaction execution time, to extend constant calls. |
| Added | rate.limiter.apiNonBlocking | Controls how HTTP and gRPC APIs behave when a rate limit is exceeded. The default false waits for capacity; true rejects an over-limit request immediately. |
| Added | event.subscribe.enable | Controls the event-subscription module and defaults to false. Set it to true when using an event plugin or the built-in ZeroMQ publisher; this is the preferred replacement for the legacy --es command-line option. See Event subscription. |
| Added | node.http.maxMessageSize | Limits Fullnode HTTP API request bodies. The default is 4194304 bytes (approximately 4 MiB); 0 rejects every non-empty request body. This limit is independent of the similarly named gRPC and JSON-RPC settings. |
| Added | node.jsonrpc.maxBatchSize, maxResponseSize, maxLogFilterNum, maxAddressSize, maxMessageSize | The defaults are 100, 26214400 bytes (25 MiB), 20000, 1000, and 4194304 bytes (approximately 4 MiB), respectively. Zero or a negative value disables the first four limits; maxMessageSize = 0 rejects every non-empty request body. maxAddressSize limits the number of addresses in an eth_getLogs filter. |
| Added | node.maxBlockInvPerSecond | Configures the accepted block-inventory-hash rate for each peer. The default is 10 per second, and the minimum is 1. Enforcement uses the most recent 10-second window, whose limit is ten times the configured value; an entire inventory message is discarded if accepting it would exceed that window limit. |
| Added | node.maxPendingBlockSize | Sets the budget used when requesting new synchronization blocks. The default is 500; configured values below 50 or above 2000 are clamped to 50 or 2000, respectively. To avoid a synchronization deadlock, retries at or below the highest previously requested height may continue after the budget is exhausted, so this is not a strict cap on all pending blocks. |
| Added | node.maxTrxCacheSize | Limits the total transactions cached across transaction-handler, pending, and repush queues. The default is 50000, and the minimum effective value is 2000. Once the cached total exceeds the limit, the node stops accepting transaction inventory messages from peers. |
| Changed | seed.node.ip.list, node.active, node.passive, node.fastForward, node.backup.members | Peer endpoints may now use hostname:port as well as IP addresses. node.backup.members coordinates active and standby roles among multiple block-producing instances for the same SR and is unrelated to the removed RocksDB data-backup feature below. |
| Changed | node.shutdown | The existing BlockTime, BlockHeight, and BlockCount conditional-shutdown settings now also apply to SolidityNode. See Stop the node at a specific block height. |
| Removed | storage.backup.* | The built-in RocksDB data-backup feature and its enable, propPath, bak1path, bak2path, and frequency settings were removed. Migrate to database snapshots or an external backup process; do not remove the still-supported node.backup settings. See Database snapshots. |
| Removed | storage.index.directory, storage.index.switch | These legacy index settings were already unused by runtime code and have now been removed. Their --storage-index-directory and --storage-index-switch command-line options are still parsed but do not change node behavior; remove them as well. |
| Removed | net.type | The legacy testnet address-prefix switch is no longer supported. Remove this key from custom configurations. |
| Removed | actuator.whitelist | Custom Actuators are no longer registered through a configuration whitelist; extension classes must be placed under the org.tron.core.actuator package. |
| Removed | node.metrics.storageEnable, node.metrics.influxdb.* | InfluxDB reporting in the legacy Metrics module was removed. Continue with node.metrics.prometheus and collect/display metrics through Prometheus and Grafana. |
Command-line compatibility
GreatVoyage-v4.8.2 marks a group of FullNode command-line options as deprecated. These include --fast-forward, --storage-*, --support-constant, --max-energy-limit-for-constant, --lru-cache-size, --min-time-ratio, --max-time-ratio, --save-*, --long-running-time, --max-connect-number, --rpc-thread, --solidity-thread, --validate-sign-thread, --trust-node, --history-balance-lookup, --contract-parse-enable, and --es. Positional seed-node arguments are also deprecated.
Except for the two ineffective storage-index options identified above, these options still take effect in this release, but the node logs a deprecation warning when they are used. Prefer their config.conf equivalents—for example, replace positional seed nodes with seed.node.ip.list and --es with event.subscribe.enable. When the same setting is supplied through multiple sources, the command line takes precedence over the configuration file, which takes precedence over the default.
Logging and monitoring migration
- gRPC logs are now written separately to
./logs/grpc/grpc.log. Update log-collection paths, rotation policies, and alerting rules after upgrading. - The new Prometheus counter
tron:sr_set_change_totalrecords active-SR set changes withactionandwitnesslabels;actionisaddorremove. The newtron:block_transaction_counthistogram uses aminerlabel and samples a block's transaction count when it enterspushBlock. It therefore also observes blocks later rejected as duplicate or stale, and blocks involved in fork switching; it is not limited to blocks ultimately applied to the canonical chain. - If the file supplied through
--log-configis missing, unreadable, or cannot be parsed, the node now fails to start. Verify custom Logback configuration files and permissions before upgrading.
Related resources
Updated 19 days ago