git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[JGIT PATCH 00/10] Object access improvements

From
Shawn O. Pearce <spearce@spearce.org>
Date
Apr 21, 2009, 01:21 UTC
Message-ID
<1240276872-17893-1-git-send-email-spearce@spearce.org>

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
Next: Shawn O. Pearce
Message 1 of 17 in “Object access improvements”
  1. 00/10 Object access improvementsShawn O. Pearce, Apr 21, 2009
  2. 01/10 Safely handle closing an already closed WindowedFileShawn O. Pearce, Apr 21, 2009
  3. 02/10 Change empty tree test case to use a temporary repositoryShawn O. Pearce, Apr 21, 2009
  4. 03/10 Replace hand-coded read fully loop with NB.readFullyShawn O. Pearce, Apr 21, 2009
  5. 04/10 Clear the reverse index when closing a PackFileShawn O. Pearce, Apr 21, 2009
  6. 05/10 Introduce a new exception type for an in-place pack modificationShawn O. Pearce, Apr 21, 2009
  7. 06/10 Refactor object database access with new abstractionShawn O. Pearce, Apr 21, 2009
  8. 07/10 Rescan packs if a pack is modified in-place (part 1)Shawn O. Pearce, Apr 21, 2009
  9. 08/10 Scan for new packs if GIT_DIR/objects/pack has been modifiedShawn O. Pearce, Apr 21, 2009
  10. 09/10 Add test cases for loading new (or replaced) pack filesShawn O. Pearce, Apr 21, 2009
  11. 10/10 BROKEN TEST: ObjectLoader stays valid across repacksShawn O. Pearce, Apr 21, 2009
  12. Robin RosenbergApr 21, 2009
  13. Shawn O. PearceApr 22, 2009
  14. Shawn O. PearceApr 22, 2009
  15. 09/10 Add test cases for loading new (or replaced) pack filesShawn O. Pearce, Apr 21, 2009
  16. Shawn O. PearceApr 21, 2009
  17. 08/10 Scan for new packs if GIT_DIR/objects/pack has been modifiedShawn O. Pearce, Apr 21, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.