68 Commits

Author SHA1 Message Date
David Ostrovsky
18c4ccd2c3 Bump JGit version to 3.7.1.201504261725-r
This version fixed JGit regression, causing severe (>10x)
performance degradation on huge repositories (>2GB) on git
push and CPU consumption explosion during replication: [1].

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=465509

Bug: Issue 3300
Change-Id: I6b1fa985fa3738801d3fa27d690a1c02c1afc1db
2015-04-27 17:11:25 +09:00
Dave Borowitz
cffa508a91 Update JGit to 3.7.0.201502260915-r.58-g65c379e
Change-Id: Ib4b994c10d83ffc30e478428545dfb0d1be97dfe
2015-03-23 15:07:31 +01:00
Matthias Sohn
cc1e2457c4 Update JGit to 3.6.2.201501210735-r
This version of JGit logs IOExceptions caught while accessing pack files
and only removes affected packs from the pack list if we know that the
pack is corrupt. Other IOExceptions could be transient hence JGit
doesn't remove the affected pack from the list anymore to avoid the
problem reported on the Gerrit list [1]. It looks like in the reported
case the pack was removed from the pack list causing
MissingObjectExceptions which disappear when the server is restarted.

[1] https://groups.google.com/forum/#!topic/repo-discuss/Qdmbl-YZ4NU

Bug: issue 3094
Change-Id: I3cf36e1c2000f42652053ada712eccb955e99390
2015-01-21 21:16:50 +00:00
Matthias Sohn
8047c4df8b Update JGit to 3.5.3.201412180710-r
This JGit version mitigates CVE-2014-9390 [1].

[1] https://projects.eclipse.org/projects/technology.jgit/releases/3.5.3

Change-Id: I7fa9ae43205afcc30f71578691f0fc30457fbd6b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2014-12-28 10:52:16 +00:00
Matthias Sohn
2793c58dae Update JGit to version 3.5.1.201410131835-r
This JGit version fixes:
- Bug 420915 - jgit gc hangs in partitionTasks with a very small repo
- Bug 427107 - cannot push anymore
The latter was observed by CollabNet to break Gerrit replication if gc
created a bitmap index which may have induced PackWriterBitmapWalker.
findObjects() to throw a MissingObjectException.

This version of JGit also fixes the recursive merger on all storage
systems.  Objects created during the virtual base construction of a
recursive merge must be written out somewhere and made available
through an ObjectReader for later passes to work on.

In both local filesystem and DFS implementations Gerrit was no-op'ing
the inserter in dry-run mode, causing these objects to be lost and
unavailable during the later processing stages of the merger.  With a
virtual common ancestor tree or blob missing, the dry-run merger fails
and a spurious merge conflict is reported.

Instead build a non-flushing inserter wrapper around a real inserter
for the repository. On local disk (standard storage) this will allow
the virtual base to write loose objects, which may be reclaimed in
about two weeks by the standard `git prune` invoked by `git gc`.

On DFS systems this will create a new pack file and buffer a block of
data in memory before starting to store to persistent storage.
However with no flush() the DfsInserter will attempt to rollback the
pack, which may allow the DFS system to reclaim its storage quickly.
Some implementations of DFS may buffer even more deeply than one
block, making the discard even cheaper for smaller merges.

This update also fixes a potential infinite loop during object
inflation within both the WindowCursor or DfsReader versions of
ObjectReader.  Inflation could get stuck if an object's compression
stream within a pack ended at a very precise alignment with the cache
block size.  The alignment problem is very rare, as it has taken
several years to identify and track down.

Includes changes done in I9859bd073bd710424e12b8b091abb8278f4f9fcc
on master.

Change-Id: I898ad7d5e836ebae0f8f84b17d0ae74489479ef9
2014-10-22 13:01:27 -04:00
Matthias Sohn
f7e16aa422 Update to JGit 3.4.0.201406110918-r
Change-Id: If43358b8d2ed4a9db6af5c7becb47e36747eb11f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2014-06-16 15:58:30 +02:00
David Ostrovsky
5dacc8bcc2 Buck: Make deps to $(exe :foo) and $(location :bar) implicitly
Apply [1] on our Buck tree.

[1] https://github.com/facebook/buck/issues/128

Change-Id: Ie3a9de0b2ee3725170bcbd06df059ea5d9ae5252
2014-06-10 07:29:42 +00:00
David Ostrovsky
d8af092c0a Buck: Remove usage of genfile()
genfile() is considered to be deprecated and is going to be discontinued
in future Buck releases [1].

[1] https://groups.google.com/forum/#!topic/buck-build/Ci8Y95USD8I

Change-Id: I7a5a1ee99d1448c412bb51b793c1e874dd3c62f4
2014-06-10 07:14:18 +00:00
Edwin Kempin
e12d850f3b Upgrade jgit to v3.4.0.201405051725-m7
This jgit milestone contains a bug-fix that fixes
MissingObjectExceptions in Gerrit.

[1] https://git.eclipse.org/r/21094

Bug: issue 2025
Change-Id: I57e95d09e87a0eca53735638da2a0ebbf30d9349
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
2014-05-09 15:52:07 +02:00
Saša Živkov
ceca56fa87 Bump JGit version to 3.3.0
Change-Id: I30c94c7b98529c503a2baf1cf3b6efcb36b60513
2014-03-07 16:38:59 +01:00
David Ostrovsky
fbf6b7dabd Download commands: Add JGit archive
Since JGit 3.1 archive command was implemented. Add it to download
drop down as new line.

The following libraries are introduced in this change:

* jgit-archive (Apache 2)
* commons-compress (Apache 2)
* tukaani-xz (Public domain)

Change-Id: I5f61aac8c434414c73585a9320e84f4430dd111d
2014-03-03 23:34:46 +00:00
Shawn Pearce
070cc0ee52 Update JGit to 3.2.0.201312181205-r.61-gf2f24a3
This fixes a long standing bug in the copy and rename detection
code where a copied file that is also updating its mode loses its
copy status and breaks the diff display.

Change-Id: I15c4d61ff1489e2c9b17e3b9ca76d9dcc98e26a8
2014-02-18 17:00:14 -08:00
David Ostrovsky
af0e80b954 Bump JGit version to 3.2.0.201312181205-r
Change-Id: Ib8a26e39d8be17854701250eb32f1cc91615ac17
2014-01-05 20:11:01 +01:00
David Ostrovsky
0b579f89ef Buck: unsign all jgit jars
Change-Id: I25749b80f2060f3322844cd2b94075acd3874e51
2013-11-08 21:59:31 +01:00
David Ostrovsky
6e0a3e5da8 Buck: extend the tool chain to support unsigning JARs
After switching to Eclipse Maven repository for pulling JGit lib, we
have the problem that according to Eclipse release train the JARs have
to be signed. That collids with our jgit patch for diff deserialization.

To rectify that, add `unsign` parameter to maven_jar() function.

Change-Id: Ib7bfa5d16f980a64b887d61a4b4ec325e6ffb0a1
2013-10-28 21:30:53 +01:00
David Pursehouse
71a869fefe Update jgit to 3.1.0.201310021548-r
Change-Id: Ib1526cd97353933dee1b76de33239cbcb31107b0
2013-10-23 20:09:48 +02:00
Shawn Pearce
4d33e1207e Update JGit to 3.0.0.201306101825-r.41-g84d2738
Change-Id: I8df4ed7daa1bda22d36cc6a146782d66f205e84c
2013-06-22 18:23:42 -07:00
Shawn Pearce
fd6bb9f6a5 Build with Buck
Implement a new build system using Buck[1], Facebook's
open source clone of Google's internal build system.

  Pros:
  - Concise build language
  - Test and build output is concise
  - Test failures and stack traces show on terminal
  - Reliable incrementals; clean is unnecessary
  - Extensible with simple blocks of Python
  - Fast
      buck: clean: 0.452s, full 1m21.083s [*], no-op:  7.145s,
      mvn:  clean: 4.596s, full 2m53.776s,     no-op: 59.108s,

      [*] full build includes downloading all dependencies,
          time can vary due to remote server performance.

  Cons:
  - No Windows support
  - No native Maven Central support (added by macros)
  - No native GWT, Prolog, or WAR support (added by macros)
  - Bootstrap of buck requires Ant

Getting started:

  git clone https://gerrit.googlesource.com/buck
  cd buck
  ant

  Mac OS X:
    PATH="`pwd`/bin:/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands:$PATH"

  Linux:
    PATH="`pwd`/bin:$PATH"

Importing into Eclipse:

  $ time buck build :eclipse
  0m48.949s

  Import existing project from `pwd`
  Import 'gerrit' (do not import other Maven based projects)
  Expand 'gerrit'
  Right click 'buck-out' > Properties
  Under Attributes check 'Derived'

  If the code doesn't currently compile but an updated classpath
  is needed, refresh the configs and obtain missing JARs:

  $ buck build :eclipse_project :download

Running JUnit tests:

  $ time buck test --all -e slow  # skip slow tests
  0m19.320s

  $ time buck test --all          # includes acceptance tests
  5m17.517s

Building WAR:

  $ buck build :gerrit
  $ java -jar buck-out/gen/gerrit.war

Building release:

  $ buck test --all && buck build :api :release
  $ java -jar buck-out/gen/release.war
  $ ls -lh buck-out/gen/{extension,plugin}-api.jar

Downloading dependencies:

  Dependencies are normally downloaded automatically, but Buck can
  inspect its graph and download missing dependencies so future
  compiles can run without the network:

  $ buck build :download

[1] http://facebook.github.io/buck/

Change-Id: I40853b108bd8e153cefa0896a5280a9a5ff81655
2013-05-09 13:40:36 +00:00