This release addresses potential memory growth issues observed on some r60 nodes by converting unbounded caches to bounded LRU caches and adding cleanup for stale peer chunk queues. Users currently on r60 experiencing memory issues should upgrade. Users on earlier releases may want to wait until these improvements have been confirmed in production.
Changed
- Observer Performance Improvements: Updated bundled observer with chunk verification optimizations ported from ar-io-node
- TX path Merkle proof parsing eliminates 7-10 API calls per chunk by extracting transaction boundaries directly from tx_path
- Pre-computed offset-to-block mapping narrows binary search range by 97-99% (from ~1.8M to ~26K blocks)
Fixed
- Memory Leak Prevention: Address potential memory growth vectors identified during OOM investigation on low-memory nodes
- Add hourly cleanup of stale
peerChunkQueuesentries for peers no longer in the active peer list (only removes idle queues) - Convert
blockByHeightPromiseCacheandtxPromiseCachefrom unbounded NodeCache to LRUCache with size limits (1000 blocks, 10000 transactions) - Convert SQLite dedupe caches (
insertDataHashCache,saveDataContentAttributesCache) from unbounded NodeCache to LRUCache (10000 entries each) - Add
arweave_peer_chunk_queues_sizePrometheus gauge for monitoring
- Add hourly cleanup of stale
Docker Images
| Image | SHA |
|---|---|
| ar-io-core | b92874f2c9442b399ad27ab2c09c13fead654b35
|
| ar-io-envoy | 4755fa0a2deb258bfaeaa91ba3154f1f7ef41fda
|
| ar-io-observer | 0380592e095cd7bf645f6d132b97301d2dad8101
|
| ar-io-litestream | be121fc0ae24a9eb7cdb2b92d01f047039b5f5e8
|
| ar-io-clickhouse-auto-import | 4512361f3d6bdc0d8a44dd83eb796fd88804a384
|