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

[JGIT PATCH v2 00/11] WindowCache rewrite... with tests

From
Shawn O. Pearce <spearce@spearce.org>
Date
Apr 29, 2009, 18:54 UTC
Message-ID
<1241031288-23437-1-git-send-email-spearce@spearce.org>
Actually, this is my entire outstanding patch set series.
1 and 2 should be trivial to apply.
3-6 should be fairly straightforward.

7 maybe we delay until later, but I don't think any applications use that map type.

8 is pretty trivial, and is needed to prevent 9 from deadlocking.

9-11 is the rewrite of WindowCache, with new unit tests to get higher levels of coverage in this section of the code. Actually doing better is really hard, as we'd need to cause thread race conditions deep within critical sections. The only way I can think to do that is to add injection points where we can insert "evil other thread" logic during the unit test, and rely on the JIT to compile them out in normal application usage. Ick. Its also quite fragile.

Shawn O. Pearce (11):
  Fix more computation of integer average overflows
  Fix performance problem recently introduced to
    DeltaPackedObjectLoader
  Replace inefficient new String(String) constructor to silence
    FindBugs
  Replace inefficient new Long(long) constructor to silence FindBugs
  Change IndexPack to use ObjectIdSubclassMap instead of ObjectIdMap
  Use getCachedBytes in IndexPack to avoid an unnecessary copy
  Remove ObjectIdMap from the JGit library
  Don't use ByteWindows when checking pack file headers/footers
  Rewrite WindowCache to be easier to follow and maintain
  Add tests for WindowCache.reconfigure cases
  Add tests to increase coverage of WindowCache
 .../jgit/test/resources/all_packed_objects.txt     |   96 ++++
 .../org/spearce/jgit/lib/ConcurrentRepackTest.java |    4 -
 .../tst/org/spearce/jgit/lib/ObjectIdMapTest.java  |  103 ----
 .../org/spearce/jgit/lib/WindowCacheGetTest.java   |  143 ++++++
 .../jgit/lib/WindowCacheReconfigureTest.java       |  119 +++++
 .../src/org/spearce/jgit/lib/ByteArrayWindow.java  |   57 +--
 .../src/org/spearce/jgit/lib/ByteBufferWindow.java |   41 +-
 .../src/org/spearce/jgit/lib/ByteWindow.java       |   91 +---
 .../spearce/jgit/lib/DeltaPackedObjectLoader.java  |    1 +
 .../src/org/spearce/jgit/lib/ObjectIdMap.java      |  201 --------
 .../org/spearce/jgit/lib/ObjectIdSubclassMap.java  |   31 ++-
 .../src/org/spearce/jgit/lib/OffsetCache.java      |  534 ++++++++++++++++++++
 .../src/org/spearce/jgit/lib/PackFile.java         |  128 +++--
 .../src/org/spearce/jgit/lib/PackIndexV1.java      |    2 +-
 .../src/org/spearce/jgit/lib/PackIndexV2.java      |    6 +-
 .../org/spearce/jgit/lib/PackedObjectLoader.java   |   11 +-
 .../src/org/spearce/jgit/lib/RefDatabase.java      |    3 +-
 .../src/org/spearce/jgit/lib/WindowCache.java      |  424 +++++-----------
 .../src/org/spearce/jgit/lib/WindowCursor.java     |   42 +-
 .../src/org/spearce/jgit/transport/IndexPack.java  |  129 +++--
 .../src/org/spearce/jgit/transport/LongMap.java    |  152 ++++++
 org.spearce.jgit/src/org/spearce/jgit/util/NB.java |   32 ++
 22 files changed, 1465 insertions(+), 885 deletions(-)
 create mode 100644 org.spearce.jgit.test/tst-rsrc/org/spearce/jgit/test/resources/all_packed_objects.txt
 delete mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/ObjectIdMapTest.java
 create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/WindowCacheGetTest.java
 create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/WindowCacheReconfigureTest.java
 delete mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/OffsetCache.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/LongMap.java
Next: Shawn O. Pearce
Message 1 of 13 in “WindowCache rewrite... with tests”
  1. 00/11 WindowCache rewrite... with testsShawn O. Pearce, Apr 29, 2009
  2. 01/11 Fix more computation of integer average overflowsShawn O. Pearce, Apr 29, 2009
  3. 02/11 Fix performance problem recently introduced to DeltaPackedObjectLoaderShawn O. Pearce, Apr 29, 2009
  4. 03/11 Replace inefficient new String(String) constructor to silence FindBugsShawn O. Pearce, Apr 29, 2009
  5. 04/11 Replace inefficient new Long(long) constructor to silence FindBugsShawn O. Pearce, Apr 29, 2009
  6. 05/11 Change IndexPack to use ObjectIdSubclassMap instead of ObjectIdMapShawn O. Pearce, Apr 29, 2009
  7. 06/11 Use getCachedBytes in IndexPack to avoid an unnecessary copyShawn O. Pearce, Apr 29, 2009
  8. 07/11 Remove ObjectIdMap from the JGit libraryShawn O. Pearce, Apr 29, 2009
  9. 08/11 Don't use ByteWindows when checking pack file headers/footersShawn O. Pearce, Apr 29, 2009
  10. 09/11 Rewrite WindowCache to be easier to follow and maintainShawn O. Pearce, Apr 29, 2009
  11. 10/11 Add tests for WindowCache.reconfigure casesShawn O. Pearce, Apr 29, 2009
  12. 11/11 Add tests to increase coverage of WindowCacheShawn O. Pearce, Apr 29, 2009
  13. Robin RosenbergApr 29, 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.