kubo/test/cli
Marcin Rataj a688b7eeac
fix(mfs): add soft limit for --flush=false (#10985)
* fix: add MFS operation limit for --flush=false

adds a global counter that tracks consecutive MFS operations performed
with --flush=false and fails with clear error after limit is reached.

this prevents unbounded memory growth while avoiding the data corruption
risks of auto-flushing.

- adds Internal.MFSNoFlushLimit config
- operations fail with actionable error at limit
- counter resets on successful flush or any --flush=true operation
- operations with --flush=true reset and don't count

this commit removes automatic flush from https://github.com/ipfs/kubo/pull/10971
and instead errors to encourage users of --flush=false to develop a habit
of calling 'ipfs files flush' periodically.

boxo will no longer auto-flush (https://github.com/ipfs/boxo/pull/1041) to
avoid corruption issues, and kubo applies the limit to 'ipfs files' commands
instead.

closes #10842

* test: add tests for MFSNoFlushLimit

tests verify the new Internal.MFSNoFlushLimit config option:
- default limit of 256 operations
- custom limit configuration
- counter reset on flush=true
- counter reset on explicit flush command
- limit=0 disables the feature
- multiple MFS command types count towards limit

* docs: explain why MFS operations fail instead of auto-flushing

addresses feedback from https://github.com/ipfs/kubo/pull/10985#pullrequestreview-3256250970

- clarify that automatic flushing at limit was considered but rejected
- explain the data corruption risks of auto-flushing
- guide users who want auto-flush to use --flush=true (default)
- document benefits of explicit failure for batch operations
2025-09-26 01:25:23 +02:00
..
autoconf refactor(config): migration 17-to-18 to unify Provider/Reprovider into Provide.DHT (#10951) 2025-09-18 22:17:43 +02:00
fixtures feat(ipns): records with V2-only signatures (#9932) 2023-06-20 14:24:31 +02:00
harness fix: disable telemetry in test profile (#10931) 2025-08-24 14:30:35 +02:00
migrations refactor(config): migration 17-to-18 to unify Provider/Reprovider into Provide.DHT (#10951) 2025-09-18 22:17:43 +02:00
testutils chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
add_test.go feat(add): add support for naming pinned CIDs (#10877) 2025-08-06 02:16:16 +02:00
agent_version_unicode_test.go fix(cmds): cleanup unicode identify strings (#9465) 2025-09-19 04:46:38 +02:00
backup_bootstrap_test.go feat(bootstrap): save connected peers as backup bootstrap peers (#8856) 2023-05-25 14:39:49 +02:00
basic_commands_test.go feat(config): AutoConf with "auto" placeholders (#10883) 2025-08-20 05:59:11 +02:00
bitswap_config_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
bootstrap_auto_test.go feat(config): AutoConf with "auto" placeholders (#10883) 2025-08-20 05:59:11 +02:00
cid_test.go fix(cmd): exit 1 on error (#10903) 2025-08-08 17:25:05 -07:00
cli_https_test.go fix(cli): support HTTPS in ipfs --api (#10659) 2025-01-10 22:34:56 +01:00
commands_without_repo_test.go fix: ipfs cid without repo (#10897) 2025-08-08 16:39:34 +02:00
completion_test.go feat: add zsh completions (#10040) 2023-08-17 16:43:27 +02:00
content_blocking_test.go fix typos in docs and comments (#10920) 2025-08-18 08:43:25 -07:00
content_routing_http_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
daemon_test.go refactor: remove goprocess (#10872) 2025-08-06 00:33:45 +02:00
dag_test.go docs: fix some typos (#10377) 2024-03-25 09:59:47 +01:00
delegated_routing_v1_http_client_test.go feat(gateway): expose /routing/v1 server (opt-in) (#9877) 2023-08-25 17:30:04 +02:00
delegated_routing_v1_http_proxy_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
delegated_routing_v1_http_server_test.go feat: Better self-service commands for DHT providing (#10677) 2025-01-31 16:33:11 +01:00
dht_autoclient_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
dht_opt_prov_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
files_test.go fix(mfs): add soft limit for --flush=false (#10985) 2025-09-26 01:25:23 +02:00
fuse_test.go refactor: remove goprocess (#10872) 2025-08-06 00:33:45 +02:00
gateway_limits_test.go feat(config): Gateway.RetrievalTimeout|MaxConcurrentRequests (#10905) 2025-08-15 02:36:33 +02:00
gateway_range_test.go feat(gateway): update gateway api, no multi-range support 2023-10-02 16:43:52 +02:00
gateway_test.go chore: use go-log/v2 (#10801) 2025-05-19 13:04:05 -07:00
http_gateway_over_libp2p_test.go chore: update dependencies (#10462)(#10466) 2024-07-30 16:42:18 +02:00
http_retrieval_client_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
identity_cid_test.go fix: enforce identity CID size limits (#10949) 2025-09-09 20:22:21 +02:00
init_test.go style: gofumpt and godot [skip changelog] (#10081) 2023-08-17 14:02:08 +02:00
log_level_test.go feat: add query functionality to log level command (#10885) 2025-08-11 12:43:48 -07:00
must.go test: port remote pinning tests to Go (#9720) 2023-03-30 07:46:35 -04:00
name_test.go feat(config): AutoConf with "auto" placeholders (#10883) 2025-08-20 05:59:11 +02:00
peering_test.go feat: add identify option to swarm peers command 2023-03-30 04:34:57 +00:00
pin_ls_names_test.go fix: ipfs pin ls <cid> --names (#10970) 2025-09-19 03:17:45 +02:00
pin_name_validation_test.go feat: limit pin names to 255 bytes (#10981) 2025-09-25 23:54:04 +02:00
ping_test.go chore: update go-libp2p-kad-dht 2023-09-21 20:14:21 +02:00
pinning_remote_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
pins_test.go chore: replace random test utils with equivalents in go-test/random (#10915) 2025-08-14 10:37:55 -07:00
provider_test.go fix: allow custom http provide when libp2p node is offline (#10974) 2025-09-19 18:55:42 +02:00
rcmgr_test.go fix: future proof with > rcmgr.DefaultLimit for new enum rcmgr values 2023-03-16 13:41:24 +01:00
routing_dht_test.go feat: Better self-service commands for DHT providing (#10677) 2025-01-31 16:33:11 +01:00
rpc_auth_test.go feat(rpc): Opt-in HTTP RPC API Authorization (#10218) 2023-11-17 01:29:29 +01:00
rpc_unixsocket_test.go Cleanup commented imports 2024-08-19 19:55:11 -07:00
stats_test.go fix: stats dht command when Routing.Type=auto (#9538) 2023-01-13 00:38:38 +01:00
swarm_test.go feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
telemetry_test.go fix: disable telemetry in test profile (#10931) 2025-08-24 14:30:35 +02:00
tracing_test.go style: gofumpt and godot [skip changelog] (#10081) 2023-08-17 14:02:08 +02:00
transports_test.go fix(ci): make NewRandPort thread-safe (#10921) 2025-08-18 22:12:22 +02:00
webui_test.go feat: ipfs-webui v4.9.0 with retrieval diagnostics (#10969) 2025-09-19 04:16:21 +02:00