pullbundle: attempt to save stablerange cache after each computation
Since we do not serve the full repository, we use more stablerange starting from
a random point. These are probably not loaded yet and should be cached.
This is best effort caching, if we can't save them we won't.
============================================Testingobsolescencemarkerspush:CasesC.2============================================Mercurialpushesobsolescencesmarkersrelevanttothe"pushed-set",thesetofallchangesetsthatrequestedtobe"in sync"afterthepush(eveniftheyarealreadyonbothside).Thistestbelongstoaseriesoftestscheckingsuchsetisproperlycomputedandapplied.Thisdoesnottests"obsmarkers"discoverycapabilities.CategoryC:advancedcaseTestCase2:PrunedchangesetonprecursorsVariants:# a: explicite push# b: bare pushC.2Prunedchangesetonprecursors==================================..{{{..B⊗..|..Aø⇠◔A'.. |/.. ● O.. }}}.... Marker exist from:.... * A'succeedtoA..*B(prune)....Commandrun:....*hgpush-rA'.. * hg push.... Expected exchange:.... * `A ø⇠o A'`..*B(prune)Setup-----$.$TESTDIR/testlib/exchange-obsmarker-util.shItinial$setupreposC.2creatingtestrepofortestcaseC.2-pulldest-main-pushdestcdinto`main`andproceedwithenvsetup$cdmain$mkcommitA0$mkcommitB$hgprune-qd'0 0'.$hgupdate-q0$mkcommitA1creatednewhead$hgdebugobsolete`getid'desc(A0)'``getid'desc(A1)'`obsoleted1changesets$hglog-G--hidden@e5ea8f9c7314(draft):A1||x06055a7959d4(draft):B|||x28b51eb45704(draft):A0|/oa9bdc8b26820(public):O$inspect_obsmarkersobsstorecontent================06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'}obshashtree===========a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04000000000000000000000000000000000000000028b51eb45704506b5c603decd6bf7ac5e0f6a52fcfacc7f87b22bba57fd24c3472f08d00c33ada5d06055a7959d4128e6e3bccfd01482e83a2db8a3ab5ae2ee85cbc1b157410b51cd9fe78fb5bb753cfe5ea8f9c73143125d36658e90ef70c6d2027a5b7945a85093e28fbda8065db6933af09acd8d22524obshashrange============revnodeindexsizedepthobshash3e5ea8f9c7314022945a85093e280a9bdc8b268200110000000000003e5ea8f9c7314112945a85093e28$cd..$cd..$cp-RC.2C.2.a$cp-RC.2C.2.bActualTest(explicitpush)---------------------------$dotestC.2.aA1##RunningtestcaseC.2.a # testing echange of "A1" (e5ea8f9c7314) ## initial state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pushing "A1" from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added1changesetswith1changesto1filesremote:2newobsolescencemarkers##postpushstate#obstore:main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest ## pulling "e5ea8f9c7314" from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded1changesetswith1changesto1files2newobsolescencemarkersnewchangesetse5ea8f9c7314(1drafts)(run'hg update'togetaworkingcopy) ## post pull state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'}ActualTest(barepush)-------------------------------------$dotestC.2.b ## Running testcase C.2.b ## initial state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest # obstore: pulldest ## pushing from main to pushdestpushingtopushdestsearchingforchangesremote:addingchangesetsremote:addingmanifestsremote:addingfilechangesremote:added1changesetswith1changesto1filesremote:2newobsolescencemarkers##postpushstate#obstore:main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest ## pulling from main into pulldestpullingfrommainsearchingforchangesaddingchangesetsaddingmanifestsaddingfilechangesadded1changesetswith1changesto1files2newobsolescencemarkersnewchangesetse5ea8f9c7314(1drafts)(run'hg update'togetaworkingcopy) ## post pull state # obstore: main06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pushdest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'} # obstore: pulldest06055a7959d4128e6e3bccfd01482e83a2db8a3a0{28b51eb45704506b5c603decd6bf7ac5e0f6a52f}(ThuJan0100:00:001970+0000){'ef1':'0','operation':'prune','user':'test'}28b51eb45704506b5c603decd6bf7ac5e0f6a52fe5ea8f9c73143125d36658e90ef70c6d2027a5b70(ThuJan0100:00:001970+0000){'user':'test'}