about summary refs log tree commit homepage
path: root/lib/PublicInbox/V2Writable.pm
diff options
context:
space:
mode:
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-04-05 21:45:25 +0000
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-04-06 21:18:34 +0000
commit5e8be4aa1e6adb321e2b85f8f96ad1e2646c093a (patch)
treef448f425b48f380fb675e298f0128517b0cfa416 /lib/PublicInbox/V2Writable.pm
parent79c5fdeacf75a2daeb57a7a5f00a170044e28634 (diff)
downloadpublic-inbox-5e8be4aa1e6adb321e2b85f8f96ad1e2646c093a.tar.gz
For upgrades, this will let users keep an old version
running while performing "public-inbox-index" on the
newest version.
Diffstat (limited to 'lib/PublicInbox/V2Writable.pm')
-rw-r--r--lib/PublicInbox/V2Writable.pm17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 83238460..ea116f1a 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -71,7 +71,7 @@ sub new {
                 lock_path => "$dir/inbox.lock",
                 # limit each repo to 1GB or so
                 rotate_bytes => int((1024 * 1024 * 1024) / $PACKING_FACTOR),
-                last_commit => [],
+                last_commit => [], # git repo -> commit
         };
         $self->{partitions} = count_partitions($self) || nproc();
         bless $self, $class;
@@ -339,15 +339,20 @@ sub purge {
         $purges;
 }
 
+sub last_commit_part ($$;$) {
+        my ($self, $i, $cmt) = @_;
+        my $v = PublicInbox::Search::SCHEMA_VERSION();
+        $self->{mm}->last_commit_xap($v, $i, $cmt);
+}
+
 sub set_last_commits ($) {
         my ($self) = @_;
         defined(my $max_git = $self->{max_git}) or return;
-        my $mm = $self->{mm};
         my $last_commit = $self->{last_commit};
         foreach my $i (0..$max_git) {
                 defined(my $cmt = $last_commit->[$i]) or next;
                 $last_commit->[$i] = undef;
-                $mm->last_commit_n($i, $cmt);
+                last_commit_part($self, $i, $cmt);
         }
 }
 
@@ -673,13 +678,13 @@ sub reindex_oid {
 # only update last_commit for $i on reindex iff newer than current
 sub update_last_commit {
         my ($self, $git, $i, $cmt) = @_;
-        my $last = $self->{mm}->last_commit_n($i);
+        my $last = last_commit_part($self, $i);
         if (defined $last && is_ancestor($git, $last, $cmt)) {
                 my @cmd = (qw(rev-list --count), "$last..$cmt");
                 chomp(my $n = $git->qx(@cmd));
                 return if $n ne '' && $n == 0;
         }
-        $self->{mm}->last_commit_n($i, $cmt);
+        last_commit_part($self, $i, $cmt);
 }
 
 sub git_dir_n ($$) { "$_[0]->{-inbox}->{mainrepo}/git/$_[1].git" }
@@ -688,7 +693,7 @@ sub last_commits {
         my ($self, $max_git) = @_;
         my $heads = [];
         for (my $i = $max_git; $i >= 0; $i--) {
-                $heads->[$i] = $self->{mm}->last_commit_n($i);
+                $heads->[$i] = last_commit_part($self, $i);
         }
         $heads;
 }