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:

  1. Back up the old configuration and record its custom settings.
  2. Start from the config.conf at the GreatVoyage-v4.8.2 tag and merge each custom setting that remains valid.
  3. Add or override new settings as needed, and remove obsolete settings according to the table below.
  4. Check defaults and field types against the GreatVoyage-v4.8.2 reference.conf.
  5. Validate node startup, APIs, P2P connectivity, event subscription, and monitoring in a test environment before upgrading production nodes.

Configuration changes

TypeConfigurationGreatVoyage-v4.8.2 behavior and migration guidance
Addedvm.constantCallTimeoutMsSets 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.
Addedrate.limiter.apiNonBlockingControls 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.
Addedevent.subscribe.enableControls 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.
Addednode.http.maxMessageSizeLimits 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.
Addednode.jsonrpc.maxBatchSize, maxResponseSize, maxLogFilterNum, maxAddressSize, maxMessageSizeThe 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.
Addednode.maxBlockInvPerSecondConfigures 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.
Addednode.maxPendingBlockSizeSets 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.
Addednode.maxTrxCacheSizeLimits 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.
Changedseed.node.ip.list, node.active, node.passive, node.fastForward, node.backup.membersPeer 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.
Changednode.shutdownThe existing BlockTime, BlockHeight, and BlockCount conditional-shutdown settings now also apply to SolidityNode. See Stop the node at a specific block height.
Removedstorage.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.
Removedstorage.index.directory, storage.index.switchThese 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.
Removednet.typeThe legacy testnet address-prefix switch is no longer supported. Remove this key from custom configurations.
Removedactuator.whitelistCustom Actuators are no longer registered through a configuration whitelist; extension classes must be placed under the org.tron.core.actuator package.
Removednode.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_total records active-SR set changes with action and witness labels; action is add or remove. The new tron:block_transaction_count histogram uses a miner label and samples a block's transaction count when it enters pushBlock. 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-config is missing, unreadable, or cannot be parsed, the node now fails to start. Verify custom Logback configuration files and permissions before upgrading.

Related resources