summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/v3.5.2-based' into v3.5.3-basedv3.5.3-basedJukka Jokiniva2022-10-1228-25/+216
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * origin/v3.5.2-based: Fix issue of some changes not loading Clear attention set when change is deferred Add label score extension points for plugin customization Add integrating section to change dashboard Fix submodule urls Modify Gerrit version string to indicate that this is a Qt fork Add QtStage permission Update status values staged, integrating and deferred for client side modules Update status values staged, integrating and deferred for java modules Change-Id: I7a780ad7b08f97982d86d5a34d472c5b7bc3e3c5 Task-number: QTQAINFRA-5213
| * Fix issue of some changes not loadingv3.5.2-basedJukka Jokiniva2022-06-081-3/+8
| | | | | | | | | | | | | | | | | | | | | | After v3.5.2 version update the changes that had once failed an integration were not loading. This was because qt gerrit plugin has been using TAG_REVERTED when adding comment messages to failed builds, and the new Gerrit version is expecting a certain message structure on the comment. Change-Id: I752c323d6de8be4bdd99d8408804091895e8aebb Reviewed-by: Toni Saario <toni.saario@qt.io>
| * Clear attention set when change is deferredJukka Jokiniva2022-05-301-0/+3
| | | | | | | | | | | | Change-Id: Id3a6a93b1db9904bc29d6330ccd867b375dd61de Fixes: QTQAINFRA-4794 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
| * Add label score extension points for plugin customizationJukka Jokiniva2022-05-302-0/+6
| | | | | | | | | | Change-Id: Ia2cfa4473b37dbbeab08e906a8aa7444c2e47d9c Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
| * Add integrating section to change dashboardJukka Jokiniva2022-05-301-1/+10
| | | | | | | | | | Change-Id: I482a9fe69c6ca39ee35f005d3443913657e28cc5 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
| * Fix submodule urlsFrederik Gladhorn2022-05-301-13/+14
| | | | | | | | | | | | | | | | We do not want to mirror all plugins. Make it convenient to work on gerrit. Change-Id: I686e9952292ddcdf5036c3eba5be8ed934a11b44 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
| * Modify Gerrit version string to indicate that this is a Qt forkJukka Jokiniva2022-05-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | And also: Use postfix for QtFork in version number There are tools parsing the version number and using QtFork-version breaks them. It's generally against conventions (semver). To make maintaining these changes easier, Ie1b91539c2fcb8fe66a7da119e4277a88ef4d291 was merged into this change. Change-Id: I2248e110a327ffc1bb1cf033a6c319117df12d26 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
| * Add QtStage permissionJukka Jokiniva2022-05-305-1/+12
| | | | | | | | | | | | | | QtStage permission controls stage and unstage functionality. Change-Id: Iea161ee5c2f86c48421c50ee8c6b87d8094d3c68 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
| * Update status values staged, integrating and deferred for client side modulesJukka Jokiniva2022-05-3012-3/+90
| | | | | | | | | | Change-Id: Ib5fcc3fe61c09680c9ea5d60e37915e7e26e8660 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
| * Update status values staged, integrating and deferred for java modulesJukka Jokiniva2022-05-304-3/+72
| | | | | | | | | | Change-Id: I8a3bd92229be84b075e31b3d969107e667a60afb Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* | Set version to 3.5.3v3.5.3Luca Milanesio2022-10-065-5/+5
| | | | | | | | | | Release-Notes: skip Change-Id: I19d3715186557a80484d35f18291a7047608915a
* | Merge "Don't update the last updated timestamp when running copy-approvals" ↵Thomas Dräbing2022-10-063-5/+34
|\ \ | | | | | | | | | into stable-3.5
| * | Don't update the last updated timestamp when running copy-approvalsThomas Draebing2022-10-063-5/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The copy-approvals pgm tool is creating new commits in the meta ref branches of changes. The commit timestamp of the latest commit in a meta ref will be taken as the last updated timestamp. This would confuse users, since very old changes could be shown as recently updated. Now the new commit timestamp will be overwritten with the timestamp of the last commit in the meta ref branch, thereby preserving the previous update timestamp. Bug: Issue 15998 Release-Notes: Preserve last updated timestamp during copying approvals Change-Id: Ib56133b39b4b980d84a1b8c6b1786ef0902bd926
* | | CreateRefControl: Check permissions on source refsPrudhvi Akhil Alahari2022-10-062-10/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Optionally check user permissions on a given list of source refs instead of looking through all refs. Create branch read validation is more restrictive when user inputs a ref. This change improves the performance of create branch REST API when user inputs a ref. Test project stats: Total refs: 1222552 Total tags: 344763 Total commits: 16770216 Site setup: Index: Lucene git data: local disk Performance of create branch REST API [1] (5 samples): before: 2m55s, 2m52s, 2m49s, 2m49s, 2m50s after: 1m20s, 1m22s, 1m22s, 1m22s, 1m22s [1] curl --netrc --location --request POST \ 'http://<server>/a/projects/test_project/branches/test_branch' \ --header 'Content-Type: application/json' \ --data-raw '{"revision" : "refs/heads/branch1"}' Release-Notes: performance of create branch REST API is improved Change-Id: Ifaefc3bd1e0e73f0e676487bed5edfcb2701e06d
* | | Merge branch 'stable-3.4' into stable-3.5Nasser Grainawi2022-10-0532-178/+916
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-3.4: Fix javadoc summary for Google Java Style Don't depend on predicate order as they get sorted based on cost Fix DefaultMemoryCacheFactory to correctly set refreshAfterWrite Shortcut CreateRefControl#checkCreateCommit only for push processing Paginate internal change index queries Fix index pagination to set 'more_changes' correctly Fix Lucene change index search-after implementation Elasticsearch tests: Recreate container for each test suite Allow different data reservoirs for metrics Update git submodules Fix AndSource to run #match() of predicate whose cost is least Bump JGit to latest stable-5.13 (035e0e23f) Add getter for registered events Change-Id: Ia5ad13da4e15781c40bf1dc6abfc98ebca000b32 Release-Notes: skip
| * | Fix javadoc summary for Google Java StyleNasser Grainawi2022-10-051-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | The summary shouldn't use @return and should use "Returns". [1] https://google.github.io/styleguide/javaguide.html#s7.2-summary-fragment Change-Id: I631f0be5c048c2f93d62993c41583fb382d714ac Release-Notes: skip
| * | Merge "Don't depend on predicate order as they get sorted based on cost" ↵Nasser Grainawi2022-10-051-8/+11
| |\ \ | | | | | | | | | | | | into stable-3.4
| | * | Don't depend on predicate order as they get sorted based on costPrudhvi Akhil Alahari2022-10-051-8/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ChangeIndexRewriterTest are dependent on predicate order for assertion. As the predicates are sorted based on cost, the order will not be same. Release-Notes: skip Change-Id: I4ac7b66132eed3151a0128117e049e869454ae81
| * | | Fix DefaultMemoryCacheFactory to correctly set refreshAfterWritePrudhvi Akhil Alahari2022-10-051-1/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | Change Ibc188bf663f49, unintentionally sets refreshAfterWrite value to expireAfterAccess. Release-Notes: Setting refreshAfterWrite in gerrit.config now works and does not mistakenly set expireAfterAccess Change-Id: I2d0da340805c74d1acde09c97b0c97550b6c606b
| * | Merge "Shortcut CreateRefControl#checkCreateCommit only for push processing" ↵Luca Milanesio2022-10-055-12/+130
| |\ \ | | | | | | | | | | | | into stable-3.4
| | * | Shortcut CreateRefControl#checkCreateCommit only for push processingPrudhvi Akhil Alahari2022-10-045-12/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The shortcut is valid when processing pushes, as the connectivity check in JGit (class ConnectivityChecker) ensures that the client can only push objects that point to objects they have access to. The CreateBranch REST API does not do a connectivity check, so we have to verify visiblity of the new commit even if the user has UPDATE access. Add a test. This fixes a data leak, where users with both UPDATE and CREATE_REF permission could obtain read access to commits by creating a branch pointing at the secret commit. Bug: Issue 16054 Release-Notes: fixes confidentiality leak in create branch API Change-Id: Icc16c2dc4d1356b9538fdc7f98b4265e32cd5e8a Co-authored-by: Han-Wen Nienhuys <hanwen@google.com>
| * | | Paginate internal change index queriesKaushik Lingarkar2022-10-044-104/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Internal index queries by default have a limit of Integer.MAX_VALUE. Performance of queries against supported index backends such as Lucene and Elasticsearch is known to degrade with a high limit. Paginate these queries instead to improve performance. Release-Notes: skip Change-Id: I2f5a6aad3798365a407bdcd050c218d4aa160b0e
| * | | Fix index pagination to set 'more_changes' correctlyKaushik Lingarkar2022-10-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The logic which determines if results must be paginated to meet the desired query limit does not handle the case where exactly one change is not visible in the first page. Fix it to always attempt to get one result more than the limit, so that 'more_changes' is set appropriately. Release-Notes: skip Change-Id: I27751facecaabed77e0dbbe0ab6d82e70598054b
| * | | Fix Lucene change index search-after implementationKaushik Lingarkar2022-10-044-15/+77
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change fixes queries (such as [1]) which search more than one change sub-index with search-after pagination type. The current search-after implementation may skip results for such queries. This can occur when we end-up with more results than the desired page-size and then trim the results down to page-size when merging results from the sub indices. Instead, keep track of the remaining results needed after each sub-index search so that, they don't exceed the page-size. [1] gerrit query project:foo --no-limit Release-Notes: skip Change-Id: I86f8bf5e475feac57c37c19e2e813397b2efcba7
| * | Elasticsearch tests: Recreate container for each test suiteNasser Grainawi2022-10-046-20/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since Change If3f8d914d5f there are multiple index configs executed in different config suites in the tests and that means the ElasticContainer will be stopped after each suite completes. Handle that by always recreating the container at the start of a suite. Also fix a couple places that were using the default index config instead of the config from the ConfigSuite. Release-Notes: skip Bug: Issue 16300 Change-Id: I39926a3dc65a2313fbcfc566f6b2b72238c6fff6
| * | Allow different data reservoirs for metricsLuca Milanesio2022-10-0311-6/+393
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The default reservoir for collecting data with DropWizard may not be suitable for all types of metrics collection. The default ExponentiallyDecayingReservoir is typically suitable for data with a lots of values per unit whilst shows inaccurancy for smaller data sets spread over a longer period of time. Introduce a new DropWizardReservoirProvider which reads the reservoir type from gerrit.config in a new section called [metrics]. The reservoir can be subsequently configured in the subsection [metrics "<reservoir>"] and its parameters tailored to the Gerrit admin's metrics collection system. For example, when using Prometheus scraper on a 1 mins interval basis, it is possible to swap the default reservoir with a more suitable SlidingTimeWindow: [metrics] reservoir = SlidingTimeWindow [metrics "SlidingTimeWindow"] window = 1 min Release-Notes: introduce metrics configuration for different data reservoirs Change-Id: Iaf73bc5c1a73423d06f423ea813df2d96e151f9e
| * | Update git submodulesPrudhvi Akhil Alahari2022-10-021-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | * Update plugins/gitiles from branch 'stable-3.4' to 6338aee4179d932b06bcc7fda37dd8a9e0c016bb - Don't depend on update ACL to create a branch Change-Id: I8067d5885c92798fde6af289e49f7b56bfe05ae0
| * | Merge "Fix AndSource to run #match() of predicate whose cost is least" into ↵Martin Fick2022-09-225-31/+87
| |\ \ | | | | | | | | | | | | stable-3.4
| | * | Fix AndSource to run #match() of predicate whose cost is leastPrudhvi Akhil Alahari2022-09-225-31/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change I0785952bf2cee, unintentionally introduced a bug where AndSource no longer picks the predicate based on cost to run #match(). Fix this issue by sorting the predicates based on cost & cardinality. Add a test for this scenario. Also fix a test which depends on predicate order. With a 3.4 test site which contains ~20k open changes, the performance of query [1] where reviewerin is costlier than destination (3 samples): before: 336s, 366s, 402s after: 4s, 4s, 4s [1] status:open reviewerin:ldap/example AND destination:name=foo With this change, queries containing predicates with poorly defined costs or cardinalities could perform worse now. Release-Notes: queries with different and accurate predicate costs are always performant despite ordering Change-Id: Ib2cb25329fddf9ff931a168fa8b5b9eff8d783c7
| * | | Merge "Bump JGit to latest stable-5.13 (035e0e23f)" into stable-3.4Nasser Grainawi2022-09-221-0/+0
| |\ \ \
| | * | | Bump JGit to latest stable-5.13 (035e0e23f)Nasser Grainawi2022-09-211-0/+0
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we need to keep 3.4 compatible with Java 8, we can't update it past the JGit stable-5.13 branch as 6.0+ is Java 11 only. * modules/jgit 5efd32e91...035e0e23f (7): 035e0e23f UploadPack: don't prematurely terminate timer in case of error 4bb469363 Do not create reflog for remote tracking branches during clone 66ace4b9a UploadPack: do not check reachability of visible SHA1s f4cbf31ae Add missing package import javax.management to org.eclipse.jgit db074a135 Prepare 5.13.2-SNAPSHOT builds b34961a49 JGit v5.13.1.202206130422-r e9a5430c2 AmazonS3: Add support for AWS API signature version 4 Change-Id: I7705445191d4b44a343ebedaa0ff73c718e1a469 Release-Notes: Corrected error logging during UploadPack failures Release-Notes: Improved performance for UploadPack reachability checks
| * | | Merge "Add getter for registered events" into stable-3.4Antoine Musso2022-09-212-0/+24
| |\ \ \ | | |/ / | |/| |
| | * | Add getter for registered eventsAntoine Musso2022-09-212-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, the only way to access the registered types was abusing the Java reflection to access private field `EventTypes.typesByString`. Allow instead to expose the registered types as public supported method `EventTypes.getRegisteredEvents()`. Release-Notes: Add public `EventTypes.getRegisteredEvents()` Change-Id: I7b4369112e838b820e452a24b4ea0da80d7664d2
* | | | Update git submodulesNasser Grainawi2022-10-041-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Update plugins/gitiles from branch 'stable-3.5' to 406c99fc5c5a5b88d09767690e07a5488d7496b2 - Merge branch 'stable-3.4' into stable-3.5 * stable-3.4: Don't depend on update ACL to create a branch Change-Id: Iebbd7750e8a97c1c035dacac80d3939baa2ed2f5 - Don't depend on update ACL to create a branch Change-Id: I8067d5885c92798fde6af289e49f7b56bfe05ae0
* | | | Bump SSHD version to 2.8.0 and update JGit to stable-6.1 tip (d01376106)David Ostrovsky2022-09-237-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a big update of JGit (but not quite catching up to Gerrit master) in order to 1) ensure no JGit regressions and 2) include the JGit change [1] which adapts to the SSHD 2.8.0 release and fixes the issues listed below. The highlights of SSHD update from Gerrit's perspective are: SSHD-1163: Wrong server key signature algorithm chosen in DH group key exchange SSHD-1197: A race condition in key exchange fixed. SSHD-1216: Server-side implementation of the RFC 8332 server-sig-algs extension: the server announces that it prefers the SHA-2 signatures for RSA keys. Additionally, SSHD 2.8.0 now supports (and prefers) the chacha20-poly1305@openssh.com cipher (SSHD-1017), and supports the curve25519 and curve448 KEX algorithms (SSHD-704). Official change list at [2]. Also adapt Gerrit code base to recent JGit changes. This update includes the following commits: $ git log --oneline --no-merges 5efd32e91...d01376106 035e0e23f UploadPack: don't prematurely terminate timer in case of error 4bb469363 Do not create reflog for remote tracking branches during clone 66ace4b9a UploadPack: do not check reachability of visible SHA1s f4cbf31ae Add missing package import javax.management to org.eclipse.jgit db074a135 Prepare 5.13.2-SNAPSHOT builds b34961a49 JGit v5.13.1.202206130422-r e9a5430c2 AmazonS3: Add support for AWS API signature version 4 8984e1f66 HTTP Smart: set correct HTTP status on error 8f7ef245f Prepare 6.1.1-SNAPSHOT builds e982de3fc JGit v6.1.0.202203080745-r f26ab4ebe [checkout] Use .gitattributes from the commit to be checked out 72bba7bd5 Don't use final for method parameters 8a2c76941 [push] support the "matching" RefSpecs ":" and "+:" 90df7c123 [push] Call the pre-push hook later in the push process 72ae234e7 IndexDiff: use tree filter also for SubmoduleWalk 46d58b84c Run license check with option -Ddash.projectId=technology.jgit c77284ab7 Exclude transitive dependencies of sshd-sftp aed354a1e Update DEPENDENCIES for 6.1.0 release 996e651c1 Add dependency to dash-licenses 877c79dc6 Fix typos of some keys in LfsText 5ac27a55b Sort LfsText entries alphabetically a229072fc Support for "lfs.url" from ".lfsconfig" e2a484f33 Update Orbit to R20220302172233 for 2022-03 60d52c9cf Prepare 6.1.0-SNAPSHOT builds 4b9fb3161 JGit v6.1.0.202203021511-rc1 6f175ea6c Describe: add support for core.abbrev config option 9244c07d7 Add a typed config getter for integers confined to a range 9284ed5db Remove odd prefix of PersonIdent test class 67097f5de PersonIdent: Add ctors that accept Instant in addition to Date 889b82f0e Remove ignored potentiallyUnclosedCloseable check c543b8ee1 Make precedence more explicit 9c27002c4 [pgm] Add describe --abbrev option 85d8b31cb Cap describe abbrev option a2d5650b8 DescribeCommand: Add support for --abbrev=0 8845f2e91 Prepare 6.1.0-SNAPSHOT builds 261f46dc4 JGit v6.1.0.202202221755-m3 00bb7cc9a Remove SuppressWarnings since currently ignored 73831b34b Add comment to explain why try-with-resource is not used a7386ffe3 DescribeCommand: Support configuring the hash abbreviation 69ef598bd Simplify implementation of WorkingTreeIterator d73b7cdeb Update Orbit to S20220215213605 63c1c6e4d Transport: load all refs only if push refspecs have wildcards 855a73487 PushCommand: determine remote from git config if not given 504001228 PushCommand: consider push.default when no RefSpecs are given c3fbd2cdf Prevent that an instance of PushCommand is reused db2d379c9 Remove unused warning suppression 288376221 Support for git config push.default 0d2825cdc Update Orbit to S20220208191225 a054f3ce7 Support LFS Server URL without .git suffix 7e752364a [rebase] InteractiveHandler2: handle Gerrit Change-Ids d0553759a [errorprone] Fix DefaultCharset warning in BareSuperprojectWriterTest 20bdcf9ea Introduce a constant for the length of an abbreviated hash string f7707e402 Make sure to close Repository in tests 70e9ace02 Fix resource leak in CancellableDigestOutputStreamTest d929e72d7 Fix "Empty block should be documented" warning e84988f2a Replace deprecated org.eclipse.jgit.lib.RefDatabase.getRefs 035d24097 RebaseCommand: fix commit message in "fixup" case 92158af52 reftable: close old Db in FileRepository#convertToPackedRefs a650ae8ad reftable: tweaks for Windows 58d203fc7 [test] Fix EolRepositoryTest for eol=native 8dcb86b60 Fix FS_Win32 if a non-directory is listed 0588dd0a9 [test] Fix ConfigTest for Windows 961d5e687 [test] Fix CommitTemplateConfigTest for Windows fbe7f9c29 [test] RepoCommandTest: guard tests for executable files dba66dbfc RepoCommand: Offer to set extra files in the destination repository dee4240ce RepoCommand: Move bare/regular superproject writing to their own classes 1fd15e40c Merge conflict messages: prefix conflict lines with a hash e297f503a RebaseCommand: better commit message rewording 513c7318d CommitCommand: commit message cleanup 318a25f0e Provide git config commit.cleanup 2b01ac338 [test] Fix closing of test repositories 8633ea4f0 [test] DirCacheCheckoutTest: fix test expectation for eol=native 4bb87a957 ObjectWalk: close ObjectReader on close() if needed d4d30bc71 [test] Fix a Windows-only test in CheckoutCommandTest f8eb53071 [test] Fix ApplyCommandTest for Windows 002e13f0f [test] Fix OpenSshConfigFileTest for Windows 8bca5245e BinaryHunkInputStream: accept CR-LF 0fb5f47d2 sshd: Add README.md for SSH agents 8e9a42b7c sshd: support the ConnectTimeout ssh config f41929708 sshd: Skip unknown keys from the SSH agent b73548bc4 sshd: support the AddKeysToAgent ssh config 68bd2c146 sshd: handle "IdentityAgent SSH_AUTH_SOCK" in ssh config e0281c5ad sshd: Connector for the Win32-OpenSSH SSH agent 071084818 sshd: handle IdentitiesOnly with an SSH agent 4efc6a396 sshd: support IdentityAgent config ad098b3b8 LFS: Fix error occurring during delete branch 1a86c1044 PackOutputStream: Extract cancellation and digest to superclass 75e7d0848 Bazel: Include bazel resource configuration file for RBE build b536dbdb9 DFS block cache: report index load and evict stats 788f439c0 Fix warning: The value of the parameter otp is not used 969601c74 Bazel: Add RBE support be732c16a Bazel: Switch to using toolchain resolution for java rules c81294796 Bazel: Simplify java 11 toolchain definition bf3298478 Bazel: Format build files with buildifier 9a16e9a20 Bazel: Remove JDK 15 toolchain definition 8227098d7 Bazel: Remove version check 132ba05c8 ExternalToolTest: Rename class name to usual name for test cases f8a96e1a0 Bazel: Add missing java packages to error_prone package group 51b909d9e Adapt junit_tests invocation to removal of resource_jars attribute 56f45e36d Update orbit to I20220111151929 685cc5404 Update org.apache.maven.wagon:wagon-ssh to 3.5.1 32cc4c56a Update org.eclipse.jdt:ecj to 3.28.0 73c398a95 Update org.osgi:org.osgi.core to 6.0.0 4aca4e0a3 [errorprone] Fix implicit use of platform default charset 8e306e7a6 [bazel] Fix build of ExternalDiffToolTest 9a57ae470 Let org.eclipse.jgit.pgm use BooleanTriState b33133497 [bazel] Skip ConfigTest#testCommitTemplatePathInHomeDirecory a268faf72 [errorprone] Fix InfiniteRecursion error in RecordingLogger 6fde4d3a6 [errorprone] Suppress Finally error in ObjectDownloadListener 8b00cb932 [errorprone] Fix implicit use of default charset in FileBasedConfigTest 2fed62528 [errorprone] Suppress FutureReturnValueIgnored in FileRepository#autoGc 1e932c2e5 Complete update to servlet api 4.0.0 d30447e26 Switch to Apache MINA sshd 2.8.0 4c555f074 sshd: backport upstream fix for SSHD-1231 e4f6e0af4 Add myself to .mailmap 709087c58 [releng] bump japicmp base version and configure sshd bundles 14a59bdc7 Add config reader for user-defined difftools 4e915f956 PackBitmapIndexV1: support parallel loading of reverse index fb684a382 Add o.e.j.ssh.apache.agent to maven central deployment scripts 30b79cd0e Prepare 6.0.1-SNAPSHOT builds 9492e84fe JGit v6.0.0.202111291000-r 26fb2b7f0 Don't block in GC#gc until garbage collection finished cce547d6d FS: debug logging only if system config file cannot be found a26618f86 Update .factorypath used by annotation processor for benchmarks 81482008c Use maven-compiler-plugin's release tag instead of source and target 8d2650773 Fix MANIFEST.MF of org.eclipse.jgit to correctly export packages: 48f4d97a2 Add command line support for "git difftool" 0a3aaac33 Don't use deprecated Repository#getAllRefs in Repository 403338e11 Don't use deprecated Repository#getAllRefs in FileRepository c20dd8206 RevListTest: fix warning that method parameter hides field 'git' 75c716f5d Implement RecordingLogger based on org.slf4j.Logger c05d711bb Let ObjectDatabase implement AutoClosable 4453a6e04 Prepare 6.1.0-SNAPSHOT builds e3707a6ce Prepare 6.0.0-SNAPSHOT builds ad8d89b9c JGit v6.0.0.202111241155-rc1 fc60efff0 Add 4.22 target platform for 2021-12 009c043b0 Update Orbit to R20211122181901 for 2021-12 791d3b0eb AppServer: fix keystore used to setup test SSL context factory 515458543 [6.0 API cleanup] Public interface for PackLock 1e37438cb [6.0 API cleanup] StoredObjectRepresentationNotAvailableException cde3ed9ec RepoCommand: Do not wrap GitApiExceptions in GitApiExceptions ce6826f50 [6.0 API cleanup] CancelledException vs. CanceledException a4542d06b Javadoc fixes 9446e6273 Better git system config finding 84a6ac3b6 HttpClientConnectionTest: organize imports f91e47f5b Update Jetty to 10.0.6 dedb58604 Fix missing @since 6.0 tag 00f6fe72a Support commit.template config property 6807661d3 Prepare 6.0.0-SNAPSHOT builds 400b5acae JGit v6.0.0.202111161950-m3 49d243b13 DFS block cache: harden against race over ref locks. ee28780bf Make BinaryBlobException stackless 78b7d9e4f Typo fix in o.e.j.ssh.{jsch,apache}/README.md 057f1d912 ssh: Handle "ProxyJump none" from SSH config file 180bc67e2 ssh: use a single SecureRandom instance for hashing hostnames af0126e1d OpenSshConfigFile: line comments and quoted strings c4b3ec72f OpenSshConfigFile: update token replacements ffb5cac36 Add missing .gitignore in o.e.j.ssh.apache.agent d4296d96b Upgrade plexus-compiler version to 2.9.0 e7838b9c0 [sshd agent] Introduce ConnectorDescriptor b84738c36 Update version of last release defining the API baseline to 5.13.0 a74dfb090 Update Orbit to S20211108222137 5cbf70fd9 Update README a92ff5369 Update jetty to 9.4.44.v20210927 3a7db8b78 Simplify SshdFtpChannel c6d48ab2f [test] test OpenSshConfigFile directly, not via the JSch config 634302d2d sshd: add support for ssh-agent 68017a029 sshd: prepare for using an SSH agent c04884fc9 [releng] bazel: Enable errorprone on o.e.j.ssh.apache 4184ff095 [releng] Make the bazel build use Java 11 f6ef2f620 [doc] Add README and package-info to the SSH bundles 83eddaf7f Binary and CR-LF detection: lone CRs -> binary 3444a3be8 Factor out parsing git-style size numbers to StringUtils c2204bb68 Make the buffer size for text/binary detection configurable 99b06900b Prepare 6.0.0-SNAPSHOT builds 6fd7a25d9 JGit v6.0.0.202110270955-m2 b3a8a94a9 Fix checkout of files with mixed line endings on text=auto eol=crlf fc6fe793c Don't rely on an implicit default character set ff3c3d8ff Fix bad indentation in pom.xml 6640baf57 Minor code-clean-up in OpenSshConfigFile 4b4a95b1b Remove use of deprecated getAllRefs() in UploadPack 3b960ae72 DFS block cache: fix lock issue and support parallel index loading f698fbf91 JSch: fix service publication for ServiceLoader f8b0c00e6 Set JSch global config values only if not set already 7d4f3c22a DFS block cache: allow multiple passes for blocks before eviction 578b6a79a GarbageCollectCommand: add numberOfBitmaps to statistics 0cfb1f77b Prepare 6.0.0-SNAPSHOT builds ffe678f08 JGit v6.0.0.202110060947-m1 4657e7a99 Rename a local variable bdba9edd5 Remove redundant type arguments 3d86d3e81 Delete old target platforms and corresponding Orbit releases 39d4daefd Update tycho to 2.5.0 and target platform to jgit-4.17 e4550807a Update ecj to 3.27.0 1aa19c67e Replace XMLReaderFactory deprecated since Java 9 81771d862 IndexDiffWithSymlinkTest: handle InaccessibleObjectException 9683bc71b Fix split package in bundle org.eclipse.jgit.ssh.jsch 68a638deb KeyGrip: fix build error on java 15 05cd1fa5c Enable using JMH annotation processor on Java>=9 72b89b4b6 Update errorprone to 2.9.0 and enable using it on java 16 9ba3a521a [errorprone] fix ReturnValueIgnored in PushCertificateStore#next f3eff2308 [errorprone] NameRevCommand: remove ignored call of #toString 1d280db14 Enable compiler option --release f81a3fc91 Bump minimum required Java version to 11 211900aaf Update maven plugins 5334586d2 Removed unused API filters 9951dce84 RepoCommand: Move building the index for base repos to its own method b6d4844b5 Enable CommitCommand to use a fluent style c885cbd11 Prepare 6.0.0-SNAPSHOT builds [1] https://git.eclipse.org/r/c/jgit/jgit/+/188371 [2] https://github.com/apache/mina-sshd/blob/master/docs/changes/2.8.0.md Bug: Issue 12758 Bug: Issue 13930 Change-Id: I9d823f8eb5912112076c4330ab32d0b5dea053ce Release-Notes: Update JGit to d01376106 which requires Java 11
* | | | Improve test coverage for no-limit query paginationKaushik Lingarkar2022-09-141-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | no-limit query pagination was introduced in Ifb1f6f54 but a test could not be added in that change as the fake index implementation did not allow it. Release-Notes: skip Change-Id: If088f45597b9d2bcdbe8f9a7ea2d0d3e4c2744ed
* | | | Improve test coverage for index query paginationKaushik Lingarkar2022-09-133-2/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add test to ensure we stop querying index when there are no more results. This test actually adds coverage for the fix done in I3143e6935 but could not be added in that change as the fake index implementation did not allow it. Release-Notes: skip Change-Id: I3ce8604893aa11830346d2a04cd3d428a6425c64
* | | | Merge branch 'stable-3.4' into stable-3.5Kaushik Lingarkar2022-09-1331-118/+559
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-3.4: Paginate no-limit queries Fix pagination to stop querying when there are no more results Avoid fetching more results than needed in paginated index queries Protect query limit effectively against integer overflows Add missing return values in MetricMaker Provide configuration to paginate index queries with increasing size Introduce a SEARCH_AFTER index pagination type ChangeIsVisibleToPredicate: Only create PermissionBackend.WithUser once Move permission filtering for All-Projects from ProjectState to ProjectConfig Change-Id: I11600ad4c11c2c546a23058b1606056d76825cd7 Release-Notes: skip
| * | | Paginate no-limit queriesKaushik Lingarkar2022-09-1212-55/+152
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, no-limit queries do a single index search with a rather large limit (around the size of change index). For Elasticsearch index backend, this can be problematic as Elasticsearch's REST client will fail with an error like [1] if too many changes have to be returned. The REST client has a default limit of 100MB for content it can process. This effectively implies that no-limit queries with ES index backend are likely non-functional for most sites as the 100MB limit is reached by as low as ~50k changes. Changing this default limit is not recommended as it can overload ES data nodes and the client as well. Instead, this change updates no-limit queries to paginate rather than doing a single index search with a large limit. It is recommended to set an appropriate value for 'index.maxPageSize' to avoid the error [1] especially when 'index.pageSizeMultiplier' is set to value greater than 1. Here are some stats with a Lucene based site and ~20k docs in open changes index and ~4M in closed changes index (with ~1M abandoned and ~3M merged). status:open staus:abandoned no-limit no-limit without this change 7.6s 436s with change paginationType=OFFSET 7.9s 2622s pageSizeMultiplier=1 with change paginationType=SEARCH_AFTER 7.8s 480s pageSizeMultiplier=1 with change paginationType=OFFSET 7.4s 417s pageSizeMultiplier=10 with change paginationType=SEARCH_AFTER 7.7s 418s pageSizeMultiplier=10 If 'index.pageSizeMultiplier' is set to 1 (default), we update it to 10 for no-limit queries as it helps improve performance and also prevents no-limit queries from severely degrading when pagination type is OFFSET. [1] entity content is too long [..] for the configured buffer limit [104857600] Release-Notes: no-limit queries are now usable with Elasticsearch index backend Change-Id: Ifb1f6f5411140c430f2520fb252e688b67d5333c
| * | | Fix pagination to stop querying when there are no more resultsKaushik Lingarkar2022-09-081-13/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the first query to the index did not fill the full limit the caller wants, we paginate to obtain more results. However, subsequent queries are not needed if there are no more results from the previous query. On a test site with ~25k open changes, query-limit of 30k and ES as index backend, a 'status:open' query when run with a user (who can't see most changes) now does 1 index search and finishes in ~30s with this change as opposed to 2 and ~45s without it. Note that, in most setups which have a default query-limit of 500 and open changes more than the query-limit, we won't see any performance improvement. Release-Notes: skip Change-Id: I3143e69354e19f3eb99c82102a3ce045af8ebc18
| * | | Merge "Avoid fetching more results than needed in paginated index queries" ↵Martin Fick2022-09-071-1/+1
| |\ \ \ | | | | | | | | | | | | | | | into stable-3.4
| | * | | Avoid fetching more results than needed in paginated index queriesKaushik Lingarkar2022-09-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'limit' when paginating the source already has 'start' added to it when query options are converted for index backend. We already have tests ensuring it. Adding it again to 'limit' will fetch us more results than we need. These extra results will eventually be trimmed, but we end-up doing more work than needed. On a test site with ~25k open changes, query-limit of 50 and ES as index backend a query like [1], when run with a user (who can't see most changes) now does 3 index searches and finishes in ~200ms with this change as opposed to 4 and ~250ms without it. Note that, this stat also depends on the fact the visible and non-visible changes are intertwined together. [1] gerrit query 'status:open' --start 40 Release-Notes: skip Change-Id: I99bc17d059b06ec0a904cb0c4036ab2ec2f45d23
| * | | | Merge "Protect query limit effectively against integer overflows" into ↵Martin Fick2022-09-061-1/+7
| |\ \ \ \ | | | | | | | | | | | | | | | | | | stable-3.4
| | * | | | Protect query limit effectively against integer overflowsKaushik Lingarkar2022-09-061-1/+7
| | |/ / / | | | | | | | | | | | | | | | | | | | | Release-Notes: skip Change-Id: Iddb338551c80e4f739a5bc4fc836c43a94604a70
| * / / / Add missing return values in MetricMakerJacek Centkowski2022-08-311-4/+6
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When new[Callback|Constant]Metric methods are called as an opposite to the remaining methods they don't return the RegistrationHandle. As a result it is no longer possible to de-register metrics created with that methods. Release-Notes: skip Change-Id: I06d48535702a8acd0bcb4e1315a35b3c1d1768cb
| * / / Provide configuration to paginate index queries with increasing sizeKaushik Lingarkar2022-08-296-9/+99
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A 'pageSizeMultiplier' config entry is added to allow paginating index queries with increasing size. Default multiplier is set to 1 to keep the current pagination unchanged. 'maxPageSize' has also been added to limit the maximum results a repeated index query can request. Increasing page sizes can help with performance of queries such as [1] where the visibility is being queried for an account that cannot see most/all changes. On a site with 1M abandoned changes, queries like [1] finish in: 45.1 mins with paginationType=OFFSET and pageSizeMultipler=1 8.5 mins with paginationType=OFFSET and pageSizeMultipler=10 9.1 mins with paginationType=SEARCH_AFTER and pageSizeMultipler=1 8.2 mins with paginationType=SEARCH_AFTER and pageSizeMultipler=10 This change also acts as a stepping stone for the next one in the series where no-limit will be updated to paginate without any regressions. [1] gerrit query 'status:abandoned visibleto:guest' Release-Notes: Index searches can now paginate with increasing size Change-Id: Iee014d1391c15d7ef31770b4fca538122944eb6b
| * | Introduce a SEARCH_AFTER index pagination typeKaushik Lingarkar2022-08-2532-55/+386
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current Paginated interface only allows to restart a query from a given offset. Update it to also allow restarting queries using a searchAfter key. searchAfter can help with performance of queries such as [1] where the visibility is being queried for an account that cannot see most/all changes. [1] finishes in ~45 mins with OFFSET and ~10 mins with SEARCH_AFTER when the site has around 1M abandoned changes. Index config has been updated to add a paginationType entry with OFFSET and SEARCH_AFTER as supported values. The default is set to OFFSET to keep the current pagination type unchanged. Gerrit's Lucene index implementation has been updated to support this new pagination type with search-after[2]. Elasticsearch index implementation has also been updated to paginate using search-after[3] and can be further improved to use PIT[4]. Lucene and Elasticsearch tests have been updated to run with both pagination types. Also, Elasticsearch tests now use the official docker image as it can handle running tests with multiple index config suites. Note that, searchAfter will not impact using offsets in Gerrit query APIs. [1] gerrit query 'status:abandoned visibleto:guest' [2] https://lucene.apache.org/core/6_6_5/core/org/apache/lucene/search/IndexSearcher.html#search-org.apache.lucene.search.Query-int-org.apache.lucene.search.Sort-boolean-boolean- [3] https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after [4] https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html Release-Notes: Index searches now support search-after pagination Change-Id: If3f8d914d5fd3f350c026cf099f08cf9a13f2195
| * | ChangeIsVisibleToPredicate: Only create PermissionBackend.WithUser onceNasser Grainawi2022-08-251-12/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No need to repeat this work for every change we're trying to match and unless the `user` is the current user, we'll be creating a new IdentifiedUser each time which adds an overhead that degrades query performance. On a site with around 20k open changes a query where the visibility is checked for an account that cannot see most/all changes improves from ~14s to ~9s. Change-Id: I9e797fcb3622ed1b0d8313d843c95f7dfaf490f5 Release-Notes: Improve performance of queries that check the visibility of changes wrt a non-current user
| * | Move permission filtering for All-Projects from ProjectState to ProjectConfigPatrick Hiesel2022-08-253-30/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Certain permissions cannot be used in All-Projects and are filtered out before we evaluate them. This used to be done in ProjectState and was cached when that entity was cached. Now, we cache immutable data objects (mostly AutoValues) for better thread safety. When the ProjectCache was refactored, this logic was left in ProjectState. This means it has to be recomputed quite often when permissions are evaluated. A recent profile showed that we can save CPU time (hence request time) as well as heap if we cache the outcome of this filtering. This is what this commit does. Existing tests check that permissions that are not allowed on All-Projects (e.g. OWNERS on refs/*) are indeed not evaluated. Since this filtering depends on if a project is considered to be All-Projects or not, we have to invalidate the cache when the name of All-Projects changes. We document this fact. Release-Notes: Cache permission filtering for All-Projects Change-Id: I01e08e70bf36aaf4be522564286ab4a86e7681a3
* | | Documentation: remove obsolete reference to bugHan-Wen Nienhuys2022-08-231-7/+2
| | | | | | | | | | | | | | | | | | | | | This bug was fixed in I5262ed8454dac3249385e9c996c07ec2177ff614. Change-Id: Ie007ef7e62c5fa77080f6fd1e5d94e0cf634f052 Release-Notes: n/a