tests/test-bundle2-exchange.t
changeset 42897 d7304434390f
parent 42894 38392d5bde8e
child 45765 ed84a4d48910
equal deleted inserted replaced
42896:7e19b640c53e 42897:d7304434390f
    56 
    56 
    57   $ hg unbundle $TESTDIR/bundles/rebase.hg
    57   $ hg unbundle $TESTDIR/bundles/rebase.hg
    58   adding changesets
    58   adding changesets
    59   adding manifests
    59   adding manifests
    60   adding file changes
    60   adding file changes
       
    61   pre-close-tip:02de42196ebe draft 
    61   added 8 changesets with 7 changes to 7 files (+3 heads)
    62   added 8 changesets with 7 changes to 7 files (+3 heads)
    62   pre-close-tip:02de42196ebe draft 
       
    63   new changesets cd010b8cd998:02de42196ebe (8 drafts)
    63   new changesets cd010b8cd998:02de42196ebe (8 drafts)
    64   postclose-tip:02de42196ebe draft 
    64   postclose-tip:02de42196ebe draft 
    65   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:$ID$ HG_TXNNAME=unbundle
    65   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:$ID$ HG_TXNNAME=unbundle
    66   bundle:*/tests/bundles/rebase.hg HG_URL=bundle:*/tests/bundles/rebase.hg (glob)
    66   bundle:*/tests/bundles/rebase.hg HG_URL=bundle:*/tests/bundles/rebase.hg (glob)
    67   (run 'hg heads' to see heads, 'hg merge' to merge)
    67   (run 'hg heads' to see heads, 'hg merge' to merge)
    92   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
    92   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
    93   $ hg clone main other --pull --rev 9520eea781bc
    93   $ hg clone main other --pull --rev 9520eea781bc
    94   adding changesets
    94   adding changesets
    95   adding manifests
    95   adding manifests
    96   adding file changes
    96   adding file changes
       
    97   pre-close-tip:9520eea781bc draft 
    97   added 2 changesets with 2 changes to 2 files
    98   added 2 changesets with 2 changes to 2 files
    98   pre-close-tip:9520eea781bc draft 
       
    99   1 new obsolescence markers
    99   1 new obsolescence markers
   100   new changesets cd010b8cd998:9520eea781bc (1 drafts)
   100   new changesets cd010b8cd998:9520eea781bc (1 drafts)
   101   postclose-tip:9520eea781bc draft 
   101   postclose-tip:9520eea781bc draft 
   102   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=9520eea781bcca16c1e15acc0ba14335a0e8e5ba HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   102   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=9520eea781bcca16c1e15acc0ba14335a0e8e5ba HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   103   file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
   103   file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
   121   pulling from $TESTTMP/main
   121   pulling from $TESTTMP/main
   122   searching for changes
   122   searching for changes
   123   adding changesets
   123   adding changesets
   124   adding manifests
   124   adding manifests
   125   adding file changes
   125   adding file changes
       
   126   pre-close-tip:24b6387c8c8c draft 
   126   added 1 changesets with 1 changes to 1 files (+1 heads)
   127   added 1 changesets with 1 changes to 1 files (+1 heads)
   127   pre-close-tip:24b6387c8c8c draft 
       
   128   1 new obsolescence markers
   128   1 new obsolescence markers
   129   new changesets 24b6387c8c8c (1 drafts)
   129   new changesets 24b6387c8c8c (1 drafts)
   130   postclose-tip:24b6387c8c8c draft 
   130   postclose-tip:24b6387c8c8c draft 
   131   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_NODE_LAST=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   131   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_NODE_LAST=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   132   file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
   132   file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
   266   pushing to other
   266   pushing to other
   267   searching for changes
   267   searching for changes
   268   remote: adding changesets
   268   remote: adding changesets
   269   remote: adding manifests
   269   remote: adding manifests
   270   remote: adding file changes
   270   remote: adding file changes
       
   271   remote: pre-close-tip:eea13746799a public book_eea1
   271   remote: added 1 changesets with 0 changes to 0 files (-1 heads)
   272   remote: added 1 changesets with 0 changes to 0 files (-1 heads)
   272   remote: pre-close-tip:eea13746799a public book_eea1
       
   273   remote: 1 new obsolescence markers
   273   remote: 1 new obsolescence markers
   274   remote: pushkey: lock state after "bookmarks"
   274   remote: pushkey: lock state after "bookmarks"
   275   remote: lock:  free
   275   remote: lock:  free
   276   remote: wlock: free
   276   remote: wlock: free
   277   remote: postclose-tip:eea13746799a public book_eea1
   277   remote: postclose-tip:eea13746799a public book_eea1
   301   pulling from ssh://user@dummy/main
   301   pulling from ssh://user@dummy/main
   302   searching for changes
   302   searching for changes
   303   adding changesets
   303   adding changesets
   304   adding manifests
   304   adding manifests
   305   adding file changes
   305   adding file changes
       
   306   updating bookmark book_02de
       
   307   pre-close-tip:02de42196ebe draft book_02de
   306   added 1 changesets with 1 changes to 1 files (+1 heads)
   308   added 1 changesets with 1 changes to 1 files (+1 heads)
   307   updating bookmark book_02de
       
   308   pre-close-tip:02de42196ebe draft book_02de
       
   309   1 new obsolescence markers
   309   1 new obsolescence markers
   310   new changesets 02de42196ebe (1 drafts)
   310   new changesets 02de42196ebe (1 drafts)
   311   postclose-tip:02de42196ebe draft book_02de
   311   postclose-tip:02de42196ebe draft book_02de
   312   txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   312   txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   313   ssh://user@dummy/main HG_URL=ssh://user@dummy/main
   313   ssh://user@dummy/main HG_URL=ssh://user@dummy/main
   327   pulling from http://localhost:$HGPORT/
   327   pulling from http://localhost:$HGPORT/
   328   searching for changes
   328   searching for changes
   329   adding changesets
   329   adding changesets
   330   adding manifests
   330   adding manifests
   331   adding file changes
   331   adding file changes
   332   added 1 changesets with 1 changes to 1 files (+1 heads)
       
   333   updating bookmark book_42cc
   332   updating bookmark book_42cc
   334   pre-close-tip:42ccdea3bb16 draft book_42cc
   333   pre-close-tip:42ccdea3bb16 draft book_42cc
       
   334   added 1 changesets with 1 changes to 1 files (+1 heads)
   335   1 new obsolescence markers
   335   1 new obsolescence markers
   336   new changesets 42ccdea3bb16 (1 drafts)
   336   new changesets 42ccdea3bb16 (1 drafts)
   337   postclose-tip:42ccdea3bb16 draft book_42cc
   337   postclose-tip:42ccdea3bb16 draft book_42cc
   338   txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_NODE_LAST=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   338   txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_NODE_LAST=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
   339   http://localhost:$HGPORT/ HG_URL=http://localhost:$HGPORT/
   339   http://localhost:$HGPORT/ HG_URL=http://localhost:$HGPORT/
   352   pushing to ssh://user@dummy/other
   352   pushing to ssh://user@dummy/other
   353   searching for changes
   353   searching for changes
   354   remote: adding changesets
   354   remote: adding changesets
   355   remote: adding manifests
   355   remote: adding manifests
   356   remote: adding file changes
   356   remote: adding file changes
       
   357   remote: pre-close-tip:5fddd98957c8 draft book_5fdd
   357   remote: added 1 changesets with 1 changes to 1 files
   358   remote: added 1 changesets with 1 changes to 1 files
   358   remote: pre-close-tip:5fddd98957c8 draft book_5fdd
       
   359   remote: 1 new obsolescence markers
   359   remote: 1 new obsolescence markers
   360   remote: pushkey: lock state after "bookmarks"
   360   remote: pushkey: lock state after "bookmarks"
   361   remote: lock:  free
   361   remote: lock:  free
   362   remote: wlock: free
   362   remote: wlock: free
   363   remote: postclose-tip:5fddd98957c8 draft book_5fdd
   363   remote: postclose-tip:5fddd98957c8 draft book_5fdd
   403   pushing to http://localhost:$HGPORT2/
   403   pushing to http://localhost:$HGPORT2/
   404   searching for changes
   404   searching for changes
   405   remote: adding changesets
   405   remote: adding changesets
   406   remote: adding manifests
   406   remote: adding manifests
   407   remote: adding file changes
   407   remote: adding file changes
       
   408   remote: pre-close-tip:32af7686d403 public book_32af
   408   remote: added 1 changesets with 1 changes to 1 files
   409   remote: added 1 changesets with 1 changes to 1 files
   409   remote: pre-close-tip:32af7686d403 public book_32af
       
   410   remote: 1 new obsolescence markers
   410   remote: 1 new obsolescence markers
   411   remote: pushkey: lock state after "bookmarks"
   411   remote: pushkey: lock state after "bookmarks"
   412   remote: lock:  free
   412   remote: lock:  free
   413   remote: wlock: free
   413   remote: wlock: free
   414   remote: postclose-tip:32af7686d403 public book_32af
   414   remote: postclose-tip:32af7686d403 public book_32af
   629   pushing to other
   629   pushing to other
   630   searching for changes
   630   searching for changes
   631   remote: adding changesets
   631   remote: adding changesets
   632   remote: adding manifests
   632   remote: adding manifests
   633   remote: adding file changes
   633   remote: adding file changes
   634   remote: added 1 changesets with 1 changes to 1 files
       
   635   remote: pre-close-tip:e7ec4e813ba6 draft 
   634   remote: pre-close-tip:e7ec4e813ba6 draft 
   636   remote: You shall not pass!
   635   remote: You shall not pass!
   637   remote: transaction abort!
   636   remote: transaction abort!
   638   remote: Cleaning up the mess...
   637   remote: Cleaning up the mess...
   639   remote: rollback completed
   638   remote: rollback completed
   644   pushing to ssh://user@dummy/other
   643   pushing to ssh://user@dummy/other
   645   searching for changes
   644   searching for changes
   646   remote: adding changesets
   645   remote: adding changesets
   647   remote: adding manifests
   646   remote: adding manifests
   648   remote: adding file changes
   647   remote: adding file changes
   649   remote: added 1 changesets with 1 changes to 1 files
       
   650   remote: pre-close-tip:e7ec4e813ba6 draft 
   648   remote: pre-close-tip:e7ec4e813ba6 draft 
   651   remote: You shall not pass!
   649   remote: You shall not pass!
   652   remote: transaction abort!
   650   remote: transaction abort!
   653   remote: Cleaning up the mess...
   651   remote: Cleaning up the mess...
   654   remote: rollback completed
   652   remote: rollback completed
   660   pushing to http://localhost:$HGPORT2/
   658   pushing to http://localhost:$HGPORT2/
   661   searching for changes
   659   searching for changes
   662   remote: adding changesets
   660   remote: adding changesets
   663   remote: adding manifests
   661   remote: adding manifests
   664   remote: adding file changes
   662   remote: adding file changes
   665   remote: added 1 changesets with 1 changes to 1 files
       
   666   remote: pre-close-tip:e7ec4e813ba6 draft 
   663   remote: pre-close-tip:e7ec4e813ba6 draft 
   667   remote: You shall not pass!
   664   remote: You shall not pass!
   668   remote: transaction abort!
   665   remote: transaction abort!
   669   remote: Cleaning up the mess...
   666   remote: Cleaning up the mess...
   670   remote: rollback completed
   667   remote: rollback completed
   694   pushing to other
   691   pushing to other
   695   searching for changes
   692   searching for changes
   696   remote: adding changesets
   693   remote: adding changesets
   697   remote: adding manifests
   694   remote: adding manifests
   698   remote: adding file changes
   695   remote: adding file changes
   699   remote: added 1 changesets with 1 changes to 1 files
       
   700   remote: Fail early!
   696   remote: Fail early!
   701   remote: transaction abort!
   697   remote: transaction abort!
   702   remote: Cleaning up the mess...
   698   remote: Cleaning up the mess...
   703   remote: rollback completed
   699   remote: rollback completed
   704   abort: pretxnchangegroup hook exited with status 1
   700   abort: pretxnchangegroup hook exited with status 1
   707   pushing to ssh://user@dummy/other
   703   pushing to ssh://user@dummy/other
   708   searching for changes
   704   searching for changes
   709   remote: adding changesets
   705   remote: adding changesets
   710   remote: adding manifests
   706   remote: adding manifests
   711   remote: adding file changes
   707   remote: adding file changes
   712   remote: added 1 changesets with 1 changes to 1 files
       
   713   remote: Fail early!
   708   remote: Fail early!
   714   remote: transaction abort!
   709   remote: transaction abort!
   715   remote: Cleaning up the mess...
   710   remote: Cleaning up the mess...
   716   remote: rollback completed
   711   remote: rollback completed
   717   remote: pretxnchangegroup hook exited with status 1
   712   remote: pretxnchangegroup hook exited with status 1
   721   pushing to http://localhost:$HGPORT2/
   716   pushing to http://localhost:$HGPORT2/
   722   searching for changes
   717   searching for changes
   723   remote: adding changesets
   718   remote: adding changesets
   724   remote: adding manifests
   719   remote: adding manifests
   725   remote: adding file changes
   720   remote: adding file changes
   726   remote: added 1 changesets with 1 changes to 1 files
       
   727   remote: Fail early!
   721   remote: Fail early!
   728   remote: transaction abort!
   722   remote: transaction abort!
   729   remote: Cleaning up the mess...
   723   remote: Cleaning up the mess...
   730   remote: rollback completed
   724   remote: rollback completed
   731   remote: pretxnchangegroup hook exited with status 1
   725   remote: pretxnchangegroup hook exited with status 1
   745   pushing to other
   739   pushing to other
   746   searching for changes
   740   searching for changes
   747   adding changesets
   741   adding changesets
   748   adding manifests
   742   adding manifests
   749   adding file changes
   743   adding file changes
   750   added 1 changesets with 1 changes to 1 files
       
   751   Fail early!
   744   Fail early!
   752   transaction abort!
   745   transaction abort!
   753   Cleaning up the mess...
   746   Cleaning up the mess...
   754   rollback completed
   747   rollback completed
   755   abort: pretxnchangegroup hook exited with status 1
   748   abort: pretxnchangegroup hook exited with status 1
   758   pushing to ssh://user@dummy/other
   751   pushing to ssh://user@dummy/other
   759   searching for changes
   752   searching for changes
   760   remote: adding changesets
   753   remote: adding changesets
   761   remote: adding manifests
   754   remote: adding manifests
   762   remote: adding file changes
   755   remote: adding file changes
   763   remote: added 1 changesets with 1 changes to 1 files
       
   764   remote: Fail early!
   756   remote: Fail early!
   765   remote: transaction abort!
   757   remote: transaction abort!
   766   remote: Cleaning up the mess...
   758   remote: Cleaning up the mess...
   767   remote: rollback completed
   759   remote: rollback completed
   768   remote: pretxnchangegroup hook exited with status 1
   760   remote: pretxnchangegroup hook exited with status 1
   772   pushing to http://localhost:$HGPORT2/
   764   pushing to http://localhost:$HGPORT2/
   773   searching for changes
   765   searching for changes
   774   remote: adding changesets
   766   remote: adding changesets
   775   remote: adding manifests
   767   remote: adding manifests
   776   remote: adding file changes
   768   remote: adding file changes
   777   remote: added 1 changesets with 1 changes to 1 files
       
   778   remote: Fail early!
   769   remote: Fail early!
   779   remote: transaction abort!
   770   remote: transaction abort!
   780   remote: Cleaning up the mess...
   771   remote: Cleaning up the mess...
   781   remote: rollback completed
   772   remote: rollback completed
   782   remote: pretxnchangegroup hook exited with status 1
   773   remote: pretxnchangegroup hook exited with status 1
   820   pushing to other
   811   pushing to other
   821   searching for changes
   812   searching for changes
   822   adding changesets
   813   adding changesets
   823   adding manifests
   814   adding manifests
   824   adding file changes
   815   adding file changes
   825   added 1 changesets with 1 changes to 1 files
       
   826   do not push the key !
   816   do not push the key !
   827   pushkey-abort: prepushkey.failpush hook exited with status 1
   817   pushkey-abort: prepushkey.failpush hook exited with status 1
   828   transaction abort!
   818   transaction abort!
   829   Cleaning up the mess...
   819   Cleaning up the mess...
   830   rollback completed
   820   rollback completed
   834   pushing to ssh://user@dummy/other
   824   pushing to ssh://user@dummy/other
   835   searching for changes
   825   searching for changes
   836   remote: adding changesets
   826   remote: adding changesets
   837   remote: adding manifests
   827   remote: adding manifests
   838   remote: adding file changes
   828   remote: adding file changes
   839   remote: added 1 changesets with 1 changes to 1 files
       
   840   remote: do not push the key !
   829   remote: do not push the key !
   841   remote: pushkey-abort: prepushkey.failpush hook exited with status 1
   830   remote: pushkey-abort: prepushkey.failpush hook exited with status 1
   842   remote: transaction abort!
   831   remote: transaction abort!
   843   remote: Cleaning up the mess...
   832   remote: Cleaning up the mess...
   844   remote: rollback completed
   833   remote: rollback completed
   848   pushing to http://localhost:$HGPORT2/
   837   pushing to http://localhost:$HGPORT2/
   849   searching for changes
   838   searching for changes
   850   remote: adding changesets
   839   remote: adding changesets
   851   remote: adding manifests
   840   remote: adding manifests
   852   remote: adding file changes
   841   remote: adding file changes
   853   remote: added 1 changesets with 1 changes to 1 files
       
   854   remote: do not push the key !
   842   remote: do not push the key !
   855   remote: pushkey-abort: prepushkey.failpush hook exited with status 1
   843   remote: pushkey-abort: prepushkey.failpush hook exited with status 1
   856   remote: transaction abort!
   844   remote: transaction abort!
   857   remote: Cleaning up the mess...
   845   remote: Cleaning up the mess...
   858   remote: rollback completed
   846   remote: rollback completed
   890   pushing to other
   878   pushing to other
   891   searching for changes
   879   searching for changes
   892   adding changesets
   880   adding changesets
   893   adding manifests
   881   adding manifests
   894   adding file changes
   882   adding file changes
   895   added 1 changesets with 1 changes to 1 files
       
   896   transaction abort!
   883   transaction abort!
   897   Cleaning up the mess...
   884   Cleaning up the mess...
   898   rollback completed
   885   rollback completed
   899   pushkey: lock state after "phases"
   886   pushkey: lock state after "phases"
   900   lock:  free
   887   lock:  free
   905   pushing to ssh://user@dummy/other
   892   pushing to ssh://user@dummy/other
   906   searching for changes
   893   searching for changes
   907   remote: adding changesets
   894   remote: adding changesets
   908   remote: adding manifests
   895   remote: adding manifests
   909   remote: adding file changes
   896   remote: adding file changes
   910   remote: added 1 changesets with 1 changes to 1 files
       
   911   remote: transaction abort!
   897   remote: transaction abort!
   912   remote: Cleaning up the mess...
   898   remote: Cleaning up the mess...
   913   remote: rollback completed
   899   remote: rollback completed
   914   remote: pushkey: lock state after "phases"
   900   remote: pushkey: lock state after "phases"
   915   remote: lock:  free
   901   remote: lock:  free
   920   pushing to http://localhost:$HGPORT2/
   906   pushing to http://localhost:$HGPORT2/
   921   searching for changes
   907   searching for changes
   922   remote: adding changesets
   908   remote: adding changesets
   923   remote: adding manifests
   909   remote: adding manifests
   924   remote: adding file changes
   910   remote: adding file changes
   925   remote: added 1 changesets with 1 changes to 1 files
       
   926   remote: transaction abort!
   911   remote: transaction abort!
   927   remote: Cleaning up the mess...
   912   remote: Cleaning up the mess...
   928   remote: rollback completed
   913   remote: rollback completed
   929   remote: pushkey: lock state after "phases"
   914   remote: pushkey: lock state after "phases"
   930   remote: lock:  free
   915   remote: lock:  free