You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: settings/pruner_settings.go
+2-1Lines changed: 2 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -18,10 +18,11 @@ type PrunerSettings struct {
18
18
UTXOProgressLogInterval time.Duration`key:"pruner_utxoProgressLogInterval" desc:"Interval for logging pruning progress" default:"30s" category:"Pruner" usage:"How often to log progress during UTXO pruning" type:"duration" longdesc:"### Purpose\nSets how often to log progress during UTXO pruning operations.\n\n### How It Works\nDuring long-running pruning operations, progress is logged at this interval to help operators monitor the operation without flooding logs.\n\n### Recommendations\n- **30s** (default) - Regular updates without excessive logging\n- Decrease for more frequent updates during debugging\n- Increase for quieter logs in stable environments"`
19
19
UTXOPartitionQueriesint`key:"pruner_utxoPartitionQueries" desc:"Number of parallel Aerospike partition queries" default:"0" category:"Pruner" usage:"0 = auto-detect based on CPU cores" type:"int" longdesc:"### Purpose\nControls the number of parallel partition workers when scanning Aerospike for prunable records.\n\n### How It Works\n- Aerospike keyspace is divided into 4096 partitions\n- This setting controls how many workers scan partitions in parallel\n- Each worker processes a range of partitions independently\n- Partition-based scanning achieves up to 100x performance improvement over sequential queries\n\n### Values\n- **0** (default) - Auto-detect based on CPU cores and Aerospike query-threads-limit\n- **N > 0** - Fixed number of partition workers (capped at 4096)\n\n### Trade-offs\n| Setting | Benefit | Drawback |\n|---------|---------|----------|\n| Higher | Faster scanning | More Aerospike load, more connections |\n| Lower | Reduced cluster pressure | Slower pruning |\n\n### Recommendations\n- Use **0** for automatic scaling based on available resources\n- Set explicitly to match your Aerospike cluster's capacity"`
20
20
UTXOSetTTLbool`key:"pruner_utxoSetTTL" desc:"Use TTL expiration instead of hard delete" default:"false" category:"Pruner" usage:"Set record TTL instead of deleting" type:"bool" longdesc:"### Purpose\nControls whether the pruner uses TTL-based expiration instead of hard deletes for UTXO records.\n\n### How It Works\n- When enabled, instead of deleting records directly, the pruner sets the Aerospike record TTL to 1 second\n- Aerospike's nsup (namespace supervisor) thread handles the actual expiration in the background\n- This produces optimized tombstones and reduces write amplification compared to hard deletes\n- The record becomes inaccessible within 1 second and is fully cleaned up by nsup\n\n### Trade-offs\n| Setting | Benefit | Drawback |\n|---------|---------|----------|\n| true | Reduced write amplification, optimized tombstones | Records persist ~1 second longer |\n| false (default) | Immediate deletion | Higher write amplification, standard tombstones |\n\n### Recommendations\n- **false** (default) - Standard hard delete behavior\n- **true** - Recommended for high-throughput environments where nsup-managed expiration is preferred"`
21
-
BlobDeletionEnabledbool`key:"pruner_blobDeletionEnabled" desc:"Enable blob deletion scheduling" default:"true" category:"Pruner" usage:"Enable deletion of expired blobs" type:"bool" longdesc:"### Purpose\nEnables scheduled deletion of blob store data (transactions and subtrees) based on Delete-At-Height (DAH) values.\n\n### How It Works\n- When enabled, pruner schedules deletions for blobs that have reached their DAH height\n- Works with all blob store types (file, S3, memory, etc.)\n- Deletion is triggered after BlobDeletionSafetyWindow blocks past the persister height\n\n### Recommendations\n- **true** (default) - Enable for normal operations\n- **false** - Disable if you want to retain all blob data indefinitely"`
21
+
SkipBlobDeletionbool`key:"pruner_skipBlobDeletion" desc:"Skip blob deletion scheduling" default:"false" category:"Pruner" usage:"Skip deletion of expired blobs" type:"bool" longdesc:"### Purpose\nSkips scheduled deletion of blob store data (transactions and subtrees) based on Delete-At-Height (DAH) values.\n\n### How It Works\n- When enabled, pruner skips deletions for blobs that have reached their DAH height\n- Works with all blob store types (file, S3, memory, etc.)\n- Deletion would normally be triggered after BlobDeletionSafetyWindow blocks past the persister height\n\n### Recommendations\n- **false** (default) - Enable blob deletion for normal operations\n- **true** - Skip blob deletion if you want to retain all blob data indefinitely"`
22
22
BlobDeletionSafetyWindowuint32`key:"pruner_blobDeletionSafetyWindow" desc:"Blocks to wait after persister before deletion" default:"10" category:"Pruner" usage:"Safety margin for blob deletion" type:"uint32" longdesc:"### Purpose\nNumber of blocks to wait after Block Persister height before deleting blobs.\n\n### How It Works\nProvides a safety margin to ensure persisted blocks are stable before deleting their associated blobs. Prevents deletion of data that might be needed during reorg scenarios.\n\n### Recommendations\n- **10** (default) - Good balance between storage and safety\n- Increase for deeper reorg protection\n- Decrease to free storage faster (not recommended)"`
23
23
BlobDeletionBatchSizeint`key:"pruner_blobDeletionBatchSize" desc:"Maximum deletions per trigger" default:"1000" category:"Pruner" usage:"Limits deletions per pruning cycle" type:"int" longdesc:"### Purpose\nMaximum number of blob deletions to process per pruning trigger.\n\n### How It Works\nLimits the number of deletions per cycle to prevent overwhelming the blob store and database. Remaining deletions are processed in subsequent triggers.\n\n### Recommendations\n- **1000** (default) - Good throughput without excessive load\n- Increase for faster cleanup if system can handle it\n- Decrease to reduce deletion load"`
24
24
BlobDeletionMaxRetriesint`key:"pruner_blobDeletionMaxRetries" desc:"Maximum retry attempts for failed deletions" default:"3" category:"Pruner" usage:"Retries for transient failures" type:"int" longdesc:"### Purpose\nMaximum number of retry attempts for failed blob deletions.\n\n### How It Works\nWhen a blob deletion fails (network error, temporary unavailability), the pruner retries up to this many times before logging an error.\n\n### Recommendations\n- **3** (default) - Good balance for transient failures\n- Increase for unreliable storage backends\n- Decrease for faster failure detection"`
25
+
SkipPreserveParentsbool`key:"pruner_skipPreserveParents" desc:"Skip Phase 1: preserve parents of unmined transactions" default:"false" category:"Pruner" usage:"Skip parent preservation phase" type:"bool" longdesc:"### Purpose\nSkips Phase 1 of pruning which preserves parent transactions of old unmined transactions.\n\n### How It Works\nWhen enabled, the pruner skips calling PreserveParentsOfOldUnminedTransactions.\nThis means parent transactions will not be protected from deletion even if they have unmined children.\n\n### Trade-offs\n| Setting | Benefit | Drawback |\n|---------|---------|----------|\n| false (default) | Parents preserved for unmined tx resubmission | Additional processing overhead |\n| true | Faster pruning, reduced processing | Parents may be deleted, breaking unmined tx chains |\n\n### Recommendations\n- **false** (default) - Normal operation, preserves parent transactions\n- **true** - Skip parent preservation if you don't need to resubmit unmined transactions"`
25
26
SkipParentUpdatesbool`key:"pruner_skipParentUpdates" desc:"Skip parent update operations" default:"false" category:"Pruner" usage:"Skip parent update operations" type:"bool" longdesc:"### Purpose\nSkips parent update operations during pruning.\n\n### How It Works\nWhen enabled, the pruner skips parent update operations during pruning.\n\n### Recommendations\n- **false** (default) - Normal operation\n- **true** - Skip parent update operations"`
26
27
SkipDeletionsbool`key:"pruner_skipDeletions" desc:"Skip deletion operations" default:"false" category:"Pruner" usage:"Skip deletion operations" type:"bool" longdesc:"### Purpose\nSkips deletion operations during pruning.\n\n### How It Works\nWhen enabled, the pruner skips deletion operations during pruning.\n\n### Recommendations\n- **false** (default) - Normal operation\n- **true** - Skip deletion operations"`
0 commit comments