tests/test-censor2.t
author Matt Harbison <matt_harbison@yahoo.com>
Tue, 18 Oct 2022 11:54:58 -0400
branchstable
changeset 49534 8251f7cc787d
parent 48862 77b5a190571c
child 51287 195ab99cf791
permissions -rw-r--r--
keepalive: ensure `close_all()` actually closes all cached connections While debugging why LFS blob downloads are getting corrupted with workers, I noticed that prior to spinning up the workers, the ConnectionManager has 2 connections to the server and calling `KeepAliveHandler.close_all()` left one behind. The reason is the value component of `self._cm.get_all().items()` is a list, and `self._cm.remove()` modifies said list while the caller is iterating over it. Now `get_all()` is a deep copy of both the dict and lists in all cases.

  $ cat >> $HGRCPATH <<EOF
  > [censor]
  > policy=ignore
  > EOF

  $ mkdir r
  $ cd r
  $ hg init
  $ echo secret > target
  $ hg commit -Am "secret"
  adding target
  $ touch bystander
  $ hg commit -Am "innocent"
  adding bystander
  $ echo erased-secret > target
  $ hg commit -m "erased secret"
  $ hg censor target --config extensions.censor= -r ".^^"
  $ hg update ".^"
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cat target
  $ hg update tip
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved