summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'stable-5.3' into stable-5.4Matthias Sohn2021-12-0428-72/+109
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.3: Remove unused import in ApacheSshTest Update maven plugins Ignore missing javadoc in test bundles storage: file: De-duplicate File.exists()+File.isFile() RefDirectory.scanRef: Re-use file existence check done in snapshot creation FileSnapshot: Lazy load file store attributes cache Update eclipse-jarsigner-plugin to 1.3.2 Fix p2 repository URLs Change-Id: I0e80612c8ddb934466105312f9107e91d581de0b
| * Merge branch 'stable-5.2' into stable-5.3Matthias Sohn2021-12-0426-69/+94
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.2: Remove unused import in ApacheSshTest Update maven plugins Ignore missing javadoc in test bundles storage: file: De-duplicate File.exists()+File.isFile() RefDirectory.scanRef: Re-use file existence check done in snapshot creation FileSnapshot: Lazy load file store attributes cache Update eclipse-jarsigner-plugin to 1.3.2 Fix p2 repository URLs Change-Id: Id989365446cb55b9188e02e6e1f8cbc8ab71071c
| | * Remove unused import in ApacheSshTestMatthias Sohn2021-12-041-1/+0
| | | | | | | | | | | | Change-Id: I55ebddf232369389e717bbf8707f6e785de14bce
| | * Merge branch 'stable-5.1' into stable-5.2Matthias Sohn2021-12-0420-52/+78
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.1: Update maven plugins Ignore missing javadoc in test bundles storage: file: De-duplicate File.exists()+File.isFile() RefDirectory.scanRef: Re-use file existence check done in snapshot creation FileSnapshot: Lazy load file store attributes cache Update eclipse-jarsigner-plugin to 1.3.2 Fix p2 repository URLs Change-Id: If3ad2cfb6c341b0ff5c2120a5a1646f6368d86e7
| | | * Update maven pluginsMatthias Sohn2021-12-032-23/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - build-helper-maven-plugin to 3.2.0 - jacoco-maven-plugin to 0.8.7 - maven-antrun-plugin to 3.0.0 - maven-dependency-plugin to 3.2.0 - maven-enforcer-plugin to 3.0.0 - maven-jar-plugin to 3.2.0 - maven-javadoc-plugin to 3.3.1 - maven-jxr-plugin to 3.1.1 - maven-pmd-plugin to 3.15.0 - maven-project-info-reports-plugin to 3.1.2 - maven-resources-plugin to 3.2.0 - maven-shade-plugin to 3.2.4 - maven-site-plugin to 3.9.1 - maven-source-plugin to 3.2.1 - maven-surefire-plugin to 3.0.0-M5 - spotbugs-maven-plugin to 4.3.0 - tycho and tycho-extras to 1.7.0 Change-Id: I7738fbfd7db60ddbeb372efcb4c72c71112ac231
| | | * Ignore missing javadoc in test bundlesMatthias Sohn2021-12-036-6/+6
| | | | | | | | | | | | | | | | | | | | Change-Id: I83ed20823dc6b22ff48c2a554acb2f7d3b6067b7 (cherry picked from commit 12f39c26b09bc3ebf1dd0216f56c37c808a53034)
| | | * storage: file: De-duplicate File.exists()+File.isFile()Nasser Grainawi2021-12-032-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | File.isFile() [1] checks if the file exists and is a normal file. [1] https://docs.oracle.com/javase/8/docs/api/java/io/File.html#isFile-- Change-Id: I0a883f2482ecc5ac58b270351b416742b568eb68 Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
| | | * RefDirectory.scanRef: Re-use file existence check done in snapshot creationKaushik Lingarkar2021-12-032-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Return immediately in scanRef if the loose ref was identified as missing when a snapshot was attempted for the ref. This will help performance of scanRef when the ref is packed but has a corresponding empty dir in 'refs/'. For example, consider the case where we create 50k sharded refs in a new namespace called 'new-refs' using an atomic 'BatchRefUpdate'. The refs are named like 'refs/new-refs/01/1/1', 'refs/new-refs/01/1/2', 'refs/new-refs/01/1/3' and so on. After the refs are created, the 'new-refs' namespace looks like below: $ find refs/new-refs -type f | wc -l 0 $ find refs/new-refs -type d | wc -l 5101 At this point, an 'exactRef' call on each of the 50k refs without this change takes ~2.5s, where as with this change it takes ~1.5s. Change-Id: I926bc41b9ae89a1a792b1b5ec9a17b05271c906b Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
| | | * FileSnapshot: Lazy load file store attributes cacheKaushik Lingarkar2021-12-021-7/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing a getFileStoreAttributes call even when the file doesn't exist is unnecessary. This call is particularly slow on some filesystems. Instead, do it only when the file exists and load the appropriate cache. This update can help speed up RefDirectory.exactRef when the ref is packed, but has a corresponding empty dir for it under 'refs/'. This scenario can happen when an atomic 'BatchRefUpdate' creates new sharded refs. For example, consider the case where we create 50k sharded refs in a new namespace called 'new-refs' using an atomic 'BatchRefUpdate'. The refs are named like 'refs/new-refs/01/1/1', 'refs/new-refs/01/1/2', 'refs/new-refs/01/1/3' and so on. After the refs are created, the 'new-refs' namespace looks like below: $ find refs/new-refs -type f | wc -l 0 $ find refs/new-refs -type d | wc -l 5101 At this point, an 'exactRef' call on each of the 50k refs without this change takes ~30s, where as with this change it takes ~2.5s. Change-Id: I4a5d4c6a652dbeed1f4bc3b4f2b2f1416f7ca0e7 Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
| | | * Update eclipse-jarsigner-plugin to 1.3.2Matthias Sohn2021-12-022-2/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: Id5d05d96c392913de7b4451421c2ffb7b63ab83f (cherry picked from commit c70c0acb4752f00672e3b856539587e4977bfaea)
| | | * Fix p2 repository URLsMatthias Sohn2021-12-028-20/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - the old jetty releases were moved to the archive server - use https - use eclipse 4.9 release repository Change-Id: I2ca20dd828a9272a383e166e6ad82390415891cf
* | | | Merge branch 'stable-5.3' into stable-5.4Thomas Wolf2021-07-291-1/+4
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.3: [test] Create keystore with the keytool of the running JDK Change-Id: If92372b7bfbfb9445fcb934c48dc1cd6610e061b Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
| * | | Merge branch 'stable-5.2' into stable-5.3Thomas Wolf2021-07-291-1/+4
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.2: [test] Create keystore with the keytool of the running JDK Change-Id: I981de862c614986a7b443fed1cce7b895b758682 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
| | * | Merge branch 'stable-5.1' into stable-5.2Thomas Wolf2021-07-291-1/+4
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.1: [test] Create keystore with the keytool of the running JDK Change-Id: Ic56f4f23c37432377be88e07d06c5ad75591d84f Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
| | | * [test] Create keystore with the keytool of the running JDKThomas Wolf2021-07-291-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Call keytool with the absolute path of "java.home". Otherwise a keytool for a different, maybe even newer Java version might be picked up, and then the keystore may not be readable by the JVM used to run the tests. (cherry picked from commit 2d73c702d3e9128b7dc03a01fe2cf18f119d3ffe) Change-Id: Iea77024947a34267f008847d81312fe0abadc615 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | Merge branch 'stable-5.3' into stable-5.4Matthias Sohn2021-06-055-115/+324
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.3: Prepare 5.1.17-SNAPSHOT builds JGit v5.1.16.202106041830-r BatchRefUpdate: Skip saving conflicting ref names and prefixes in memory BatchRefUpdateTest: Accurately assert RefsChangedEvent(s) fired Optimize RefDirectory.isNameConflicting() Update bazlets and bazel version Change-Id: I1338fc79a7be6b77fb28df511dd7504fb19b6d1a
| * | | Merge branch 'stable-5.2' into stable-5.3Matthias Sohn2021-06-055-115/+324
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.2: Prepare 5.1.17-SNAPSHOT builds JGit v5.1.16.202106041830-r BatchRefUpdate: Skip saving conflicting ref names and prefixes in memory BatchRefUpdateTest: Accurately assert RefsChangedEvent(s) fired Optimize RefDirectory.isNameConflicting() Update bazlets and bazel version Change-Id: I7838f7d237a3598bf55995426d7ba1de146cb6ad
| | * | Merge branch 'stable-5.1' into stable-5.2Matthias Sohn2021-06-055-115/+324
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.1: Prepare 5.1.17-SNAPSHOT builds JGit v5.1.16.202106041830-r BatchRefUpdate: Skip saving conflicting ref names and prefixes in memory BatchRefUpdateTest: Accurately assert RefsChangedEvent(s) fired Optimize RefDirectory.isNameConflicting() Update bazlets and bazel version Change-Id: If1b5a2b380cf155e66bf5d5c6d216f86c919bb37
| | | * Prepare 5.1.17-SNAPSHOT buildsMatthias Sohn2021-06-0557-360/+360
| | | | | | | | | | | | | | | | | | | | Change-Id: I20c69728465f956a5744a75eb548ef18962286dd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * JGit v5.1.16.202106041830-rv5.1.16.202106041830-rMatthias Sohn2021-06-0557-60/+60
| | | | | | | | | | | | | | | | | | | | Change-Id: I526ed2a08553bc0b2678aaefaff9e0c6529baefc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * Merge changes I853ac6c7,I01878116,Ie994fc18 into stable-5.1Matthias Sohn2021-06-043-113/+322
| | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * changes: BatchRefUpdate: Skip saving conflicting ref names and prefixes in memory BatchRefUpdateTest: Accurately assert RefsChangedEvent(s) fired Optimize RefDirectory.isNameConflicting()
| | | | * BatchRefUpdate: Skip saving conflicting ref names and prefixes in memoryKaushik Lingarkar2021-05-241-41/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than getting all ref names and prefixes and saving them in memory to perform the check for conflicting names, rely on RefDirectory.isNameConflicting as it is no longer an expensive call after it was optimized in Ie994fc. The old optimization to save ref names and prefixes in memory was targeted towards making clones faster. With this change, the clone performance is unaffected when tests were done with repos containing many(~500k) refs. Here are few recorded elapsed times for creating 10 branches using BatchRefUpdate on NFS based repositories with varying loose refs count. As seen here, this change helps improve the BatchRefUpdate performance from O(n^2) to O(1). loose_refs_count with_change without_change 50 241 ms 310 ms 300 263 ms 1502 ms 1k 181 ms 4241 ms 2k 204 ms 6440 ms 9k 158 ms 25930 ms 20k 154 ms 60443 ms 50k 171 ms 135199 ms 110k 157 ms 329450 ms 160k 209 ms 396328 ms This update improves the Gerrit notedb migration performance as it uses BatchRefUpdate to write change meta refs similar to the test performed above. Change-Id: I853ac6c7feb4b39c3156c01876b38cbd182accfe Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
| | | | * BatchRefUpdateTest: Accurately assert RefsChangedEvent(s) firedKaushik Lingarkar2021-05-241-40/+306
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update tests to record the number of events fired post-setup and only assert for events fired during BatchRefUpdate.execute. For tests which use writeLooseRef to setup refs, create new tests which assert the number of RefsChangedEvent(s) rather than updating the existing ones to call RefDirectory.exactRef as it changes the code path. Change-Id: I0187811628d179d9c7e874c9bb8a7ddb44dd9df4 Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
| | | | * Optimize RefDirectory.isNameConflicting()Kaushik Lingarkar2021-05-241-32/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid having to scan over ALL loose refs to determine if the name is nested within or is a container of an existing reference. This can get really expensive if there are too many loose refs. Instead use exactRef and getRefsByPrefix which scan based on a prefix. With a simple shell script(like below) using jgit client to create 1k refs in a new repository on NFS, this change brings down the time from 12mins to 7mins. for ref in $(seq 1 1000); do jgit branch "$ref" done Here are few recorded elapsed times to create a new branch on NFS based repositories with varying loose refs count. As we see here, this change improves the name conflicting check from O(n^2) to O(1). loose_refs_count with_change without_change 50 44 ms 164 ms 300 45 ms 1193 ms 1k 38 ms 2610 ms 2k 44 ms 6003 ms 9k 46 ms 27860 ms 20k 45 ms 48591 ms 50k 51 ms 135471 ms 110k 43 ms 294252 ms 160k 52 ms 430976 ms Change-Id: Ie994fc184b8f82811bfb37b111eb9733dbe3e6e0 Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
| | | * | Update bazlets and bazel versionMatthias Sohn2021-05-142-2/+2
| | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - bazlets need to be updated to react on Maven central no longer supporting http protocol but only https - update bazel to 2.0 Change-Id: I07f5f050f3b1db2014a5198a28b6bbf893434814 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com> (cherry picked from commit d74daad1e064da9614c5ca2c0138c8046cfb0829)
* | | | Merge branch 'stable-5.3' into stable-5.4Matthias Sohn2020-12-021-0/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.3: Prepare 5.3.10-SNAPSHOT builds JGit v5.3.9.202012012026-r Prepare 5.1.16-SNAPSHOT builds JGit v5.1.15.202012011955-r Fix PackInvalidException when fetch and repack run concurrently Change-Id: I319b54ceffe095add60420c6ae83eac0ba9c14b6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | Prepare 5.3.10-SNAPSHOT buildsMatthias Sohn2020-12-0269-428/+428
| | | | | | | | | | | | | | | | | | | | Change-Id: I6f131ad04574bd0d569ae6a59c29ea987be0efb2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | JGit v5.3.9.202012012026-rv5.3.9.202012012026-rMatthias Sohn2020-12-0269-90/+90
| | | | | | | | | | | | | | | | | | | | Change-Id: I75e03ef8630d7a369e97be0f797253b968575354 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | Merge branch 'stable-5.2' into stable-5.3Matthias Sohn2020-12-021-0/+1
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.2: Prepare 5.1.16-SNAPSHOT builds JGit v5.1.15.202012011955-r Fix PackInvalidException when fetch and repack run concurrently Change-Id: If1d8034b5e0cbc004a11a31b228cb5732efb390d Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | * | Merge branch 'stable-5.1' into stable-5.2Matthias Sohn2020-12-021-0/+1
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.1: Prepare 5.1.16-SNAPSHOT builds JGit v5.1.15.202012011955-r Fix PackInvalidException when fetch and repack run concurrently Change-Id: Id83e29e567646a3945a5b817860ea8f7c3e6e5cf Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * Prepare 5.1.16-SNAPSHOT buildsMatthias Sohn2020-12-0257-360/+360
| | | | | | | | | | | | | | | | | | | | Change-Id: I50e59e1e73a92fa4fe366398fb8141f5e2e289c1 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * JGit v5.1.15.202012011955-rv5.1.15.202012011955-rMatthias Sohn2020-12-0257-60/+60
| | | | | | | | | | | | | | | | | | | | Change-Id: Icb4f04a40ab366cbacbb3fdf0db1748f27277fda Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * Fix PackInvalidException when fetch and repack run concurrentlyPetr Hrebejk2020-12-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We are running several servers with jGit. We need to run repack from time to time to keep the repos performant. I.e. after push we test how many small packs are in the repo and when a threshold is reached we run the repack. After upgrading jGit version we've found that if someone does the clone at the time repack is running the clone sometimes (not always) fails because the repack removes .pack file used by the clone. Server exception and client error attached. I've tracked down the cause and it seems to be introduced between jGit 5.2 (which we upgraded from) and 5.3 and being caused by this commit: Move throw of PackInvalidException outside the catch - https://github.com/eclipse/jgit/commit/afef866a44cd65fef292c174cad445b3fb526400 The problem is that when the throw was inside of the try block the last catch block catched the exception and called openFailed(false) method. It is true that it called it with invalidate = false, which is wrong. The real problem though is that with the throw outside of the try block the openFail is not called at all and the fields activeWindows and activeCopyRawData are not set to 0. Which affects the later called tests like: if (++activeCopyRawData == 1 && activeWindows == 0). The fix for this is relatively simple keeping the throw outside of the try block and still having the invalid field set to true. I did exhaustive testing of the change running concurrent clones and pushes indefinitely and with the patch applied it never fails while without the patch it takes relatively short to get the error. See: https://www.eclipse.org/lists/jgit-dev/msg04014.html Bug: 569349 Change-Id: I9dbf8801c8d3131955ad7124f42b62095d96da54 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Remove unused importsMatthias Sohn2020-11-272-2/+0
| | | | | | | | | | | | | | | | Change-Id: Id78f4fd7d11a8908f41160a2ab9f3d81b7f771da Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Silence API warningsMatthias Sohn2020-11-271-0/+8
| | | | | | | | | | | | | | | | Change-Id: I5de476935e79f8f0beefc27885cbc3ffe31c0aed Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Remove erraneously merged source featuresMatthias Sohn2020-11-274-186/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In 5.4 source features were combined into a single feature. Change-Id: I4055ec805bb036d0f445c8b9b0bb670495a32cc0 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Merge branch 'stable-5.3' into stable-5.4Matthias Sohn2020-11-2711-11/+223
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.3: Prepare 5.3.9-SNAPSHOT builds JGit v5.3.8.202011260953-r Prepare 5.1.15-SNAPSHOT builds JGit v5.1.14.202011251942-r GC#deleteOrphans: log warning for deleted orphaned files GC#deleteOrphans: handle failure to list files in pack directory Ensure that GC#deleteOrphans respects pack lock Update API warning filters Remove unused imports Change-Id: I82576ad0f61cf3ff11b54691b32666c61401ad9b Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | Prepare 5.3.9-SNAPSHOT buildsMatthias Sohn2020-11-2669-428/+428
| | | | | | | | | | | | | | | | | | | | Change-Id: I69f181453c79cef2b4f43fac38d9836917cdc973 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | JGit v5.3.8.202011260953-rv5.3.8.202011260953-rMatthias Sohn2020-11-2669-90/+90
| | | | | | | | | | | | | | | | | | | | Change-Id: I7b128942ef224335f415f867c2d9d5da7498ed8b Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | Merge branch 'stable-5.2' into stable-5.3Matthias Sohn2020-11-267-11/+37
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.2: Prepare 5.1.15-SNAPSHOT builds JGit v5.1.14.202011251942-r GC#deleteOrphans: log warning for deleted orphaned files GC#deleteOrphans: handle failure to list files in pack directory Ensure that GC#deleteOrphans respects pack lock Update API warning filters Remove unused imports Change-Id: Id9386846a202b5ae98dd602744963f8897ddaa8c
| | * | Merge branch 'stable-5.1' into stable-5.2Matthias Sohn2020-11-267-11/+37
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.1: Prepare 5.1.15-SNAPSHOT builds JGit v5.1.14.202011251942-r GC#deleteOrphans: log warning for deleted orphaned files GC#deleteOrphans: handle failure to list files in pack directory Ensure that GC#deleteOrphans respects pack lock Update API warning filters Remove unused imports Change-Id: I91cfe2820c40d2d773cbf018cc2a6c36b062801e Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * Prepare 5.1.15-SNAPSHOT buildsMatthias Sohn2020-11-2657-360/+360
| | | | | | | | | | | | | | | | | | | | Change-Id: I70246b66c76e865aef4e3adada3a507750ca7c63 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * JGit v5.1.14.202011251942-rv5.1.14.202011251942-rMatthias Sohn2020-11-2657-60/+60
| | | | | | | | | | | | | | | | | | | | Change-Id: Ibe124988be39feaa029c3770777126dd87b18abc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * GC#deleteOrphans: log warning for deleted orphaned filesMatthias Sohn2020-11-263-1/+5
| | | | | | | | | | | | | | | | Change-Id: Ie245bf5c8c924dfb1f0f40b8bcdcb1e6f5815526 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * GC#deleteOrphans: handle failure to list files in pack directoryMatthias Sohn2020-11-261-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - log an error - either there is no list or it is incomplete hence return immediately Change-Id: Ieee5378ca06304056b9ccc30c1acd5f52360052d Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * Ensure that GC#deleteOrphans respects pack lockMatthias Sohn2020-11-262-4/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If pack or index files are guarded by a pack lock (.keep file) deleteOrphans() should not touch the respective files protected by the lock file. Otherwise it may interfere with PackInserter concurrently inserting a new pack file and its index. The problem was caused by the following race. All mentioned files are located in "objects/pack/". File endings relevant in "pack" dir: .pack .keep .idx .bitmap When ReceivePack receives a pack file it executes the following steps: ReceivePack.service(): receivePackAndCheckConnectivity(): receivePack(): receive the pack parse the pack, returns packLock (.keep file) PackInserter.flush(): write tmpPck file: "insert_<random>.pack" write tmpIdx file: "insert_<random>.idx" real pack name: "pack-<SHA1>.pack" real index name: "pack-<SHA1>.idx" atomic rename tmpPack to realPack atomic rename tmpIdx to tmpIdx execute commands unlock pack by removing .keep file trigger auto gc if enabled When PackInserter.flush() renames the temporary pack to the final "pack-xxx.pack" file the temporary pack index file "insert_xxx.idx" has no matching .pack file with the same base name for a short interval. If deleteOrphans() ran during that interval it deduced the pack index file was orphaned. Subsequently the missing pack index caused MissingObjectExceptions since objects contained in the pack couldn't be looked up anymore. Bug: https://bugs.chromium.org/p/gerrit/issues/detail?id=13544 Change-Id: I559c81e4b1d7c487f92a751bd78b987d32c98719 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * Update API warning filtersMatthias Sohn2020-07-191-0/+28
| | | | | | | | | | | | | | | | Change-Id: I0fa9c7725ee15da9a932dab0abfb2525d2401149 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | | * Remove unused importsMatthias Sohn2020-07-193-4/+0
| | | | | | | | | | | | | | | | Change-Id: I7c44e3603df2dd368cb7c0ba0072413b887b6903 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Merge branch 'stable-5.3' into stable-5.4Matthias Sohn2020-02-110-0/+0
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.3: Prepare 5.3.8-SNAPSHOT builds JGit v5.3.7.202002110540-r Prepare 5.1.14-SNAPSHOT builds JGit v5.1.13.202002110435-r Change-Id: I075f8b8f97a5e97602c058770fe12164af2ce66a Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | Prepare 5.3.8-SNAPSHOT buildsMatthias Sohn2020-02-1169-428/+428
| | | | | | | | | | | | | | | | | | | | Change-Id: I64ef3b4cf30e87d058001c2c6f1458f4b0c1df00 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>