|
354 | 354 | <a href="#353" id="353">353</a> |
355 | 355 | <a href="#354" id="354">354</a> |
356 | 356 | <a href="#355" id="355">355</a> |
357 | | -<a href="#356" id="356">356</a></pre></div><pre class="rust"><code><span class="kw">use </span>std::{collections::HashSet, pin::Pin, sync::Arc}; |
| 357 | +<a href="#356" id="356">356</a> |
| 358 | +<a href="#357" id="357">357</a> |
| 359 | +<a href="#358" id="358">358</a> |
| 360 | +<a href="#359" id="359">359</a> |
| 361 | +<a href="#360" id="360">360</a> |
| 362 | +<a href="#361" id="361">361</a></pre></div><pre class="rust"><code><span class="kw">use </span>std::{collections::HashSet, pin::Pin, sync::Arc}; |
358 | 363 |
|
359 | 364 | <span class="kw">use </span>bao_tree::ChunkRanges; |
360 | 365 | <span class="kw">use </span>genawaiter::sync::{Co, Gen}; |
|
510 | 515 | >; |
511 | 516 |
|
512 | 517 | <span class="kw">pub async fn </span>gc_run_once(store: <span class="kw-2">&</span>Store, live: <span class="kw-2">&mut </span>HashSet<Hash>) -> <span class="kw">crate</span>::api::Result<()> { |
| 518 | + <span class="macro">debug!</span>(externally_protected = live.len(), <span class="string">"gc: start"</span>); |
513 | 519 | { |
514 | 520 | store.clear_protected().<span class="kw">await</span><span class="question-mark">?</span>; |
515 | 521 | <span class="kw">let </span><span class="kw-2">mut </span>stream = gc_mark(store, live); |
|
528 | 534 | } |
529 | 535 | } |
530 | 536 | } |
| 537 | + <span class="macro">debug!</span>(total_protected = live.len(), <span class="string">"gc: sweep"</span>); |
531 | 538 | { |
532 | 539 | <span class="kw">let </span><span class="kw-2">mut </span>stream = gc_sweep(store, live); |
533 | 540 | <span class="kw">while let </span><span class="prelude-val">Some</span>(ev) = stream.next().<span class="kw">await </span>{ |
|
545 | 552 | } |
546 | 553 | } |
547 | 554 | } |
| 555 | + <span class="macro">debug!</span>(<span class="string">"gc: done"</span>); |
548 | 556 |
|
549 | 557 | <span class="prelude-val">Ok</span>(()) |
550 | 558 | } |
551 | 559 |
|
552 | 560 | <span class="kw">pub async fn </span>run_gc(store: Store, config: GcConfig) { |
| 561 | + <span class="macro">debug!</span>(<span class="string">"gc enabled with interval {:?}"</span>, config.interval); |
553 | 562 | <span class="kw">let </span><span class="kw-2">mut </span>live = HashSet::new(); |
554 | 563 | <span class="kw">loop </span>{ |
| 564 | + live.clear(); |
555 | 565 | tokio::time::sleep(config.interval).<span class="kw">await</span>; |
556 | 566 | <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>cb) = config.add_protected { |
557 | 567 | <span class="kw">match </span>(cb)(<span class="kw-2">&mut </span>live).<span class="kw">await </span>{ |
|
0 commit comments