[JGIT PATCH 00/10] Object access improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This series tries to address issue 79[1] and GERRIT-81[2] by
detecting when packs have been overwritten on disk, or when
new packs have appeared and old packs have disappeared.

The first 5 patches are quite trivial and are just things I
found while working on the real issue.

Patch 6 is rather intrusive.  It starts a refactoring I have
always wanted to do, which is to split the object database out
of the Repository class, and also start to divorce it from the
local filesystem.  The library is in the same state after patch
5 as it was before patch 5; that is issue 79 is still an issue,
but everything else is fine.

Patch 7 and 8 fix issue 79.

Patch 9 is a rewritten version of your 1/3 posted Sun 19 Apr,
providing test cases for issue 79 / GERRIT-81.

Patch 10 is a broken test case.  Basically as I explain in the
commit message of 7, PackWriter can still crash randomly.

With 1-9 applied, issue 79 can be marked fixed, but GERRIT-81 is
still a problem, as any concurrent PackWriter thread may randomly
crash during a repack.

[1] http://code.google.com/p/egit/issues/detail?id=79
[2] http://jira.source.android.com/jira/browse/GERRIT-81

Shawn O. Pearce (10):
  Safely handle closing an already closed WindowedFile
  Change empty tree test case to use a temporary repository
  Replace hand-coded read fully loop with NB.readFully
  Clear the reverse index when closing a PackFile
  Introduce a new exception type for an in-place pack modification
  Refactor object database access with new abstraction
  Rescan packs if a pack is modified in-place (part 1)
  Scan for new packs if GIT_DIR/objects/pack has been modified
  Add test cases for loading new (or replaced) pack files
  BROKEN TEST: ObjectLoader stays valid across repacks

 .../org/spearce/jgit/lib/ConcurrentRepackTest.java |  252 +++++++++++
 .../org/spearce/jgit/lib/RepositoryTestCase.java   |    2 -
 .../tst/org/spearce/jgit/lib/T0003_Basic.java      |   11 +-
 .../tst/org/spearce/jgit/lib/T0004_PackReader.java |    1 -
 .../spearce/jgit/errors/PackMismatchException.java |   55 +++
 .../src/org/spearce/jgit/lib/ObjectDatabase.java   |  367 ++++++++++++++++
 .../src/org/spearce/jgit/lib/ObjectDirectory.java  |  438 ++++++++++++++++++++
 .../src/org/spearce/jgit/lib/PackFile.java         |   36 ++-
 .../src/org/spearce/jgit/lib/Repository.java       |  174 +--------
 .../org/spearce/jgit/lib/UnpackedObjectLoader.java |   34 +-
 .../src/org/spearce/jgit/lib/WindowedFile.java     |   16 +-
 11 files changed, 1183 insertions(+), 203 deletions(-)
 create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/ConcurrentRepackTest.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/errors/PackMismatchException.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/ObjectDatabase.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/ObjectDirectory.java

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]