From: Eric Wong Date: Sat, 10 Dec 2016 01:09:51 +0000 (+0000) Subject: search: always sort thread results in ascending time order X-Git-Tag: v1.0.0~144 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71d0581a309ca83cf3be538141435111db8ed290;p=thirdparty%2Fpublic-inbox.git search: always sort thread results in ascending time order This makes life easier for the threading algorithm, as we can use the implied ordering of timestamps to avoid temporary ghosts and resulting container vivication. This would've also allowed us to hide the bug (in most cases) fixed by the patch titled "thread: last Reference always wins", in case that needs to be reverted due to infinite looping. --- diff --git a/lib/PublicInbox/Mbox.pm b/lib/PublicInbox/Mbox.pm index fd623f6d4..2565ea58a 100644 --- a/lib/PublicInbox/Mbox.pm +++ b/lib/PublicInbox/Mbox.pm @@ -115,7 +115,7 @@ sub new { cb => $cb, ctx => $ctx, msgs => [], - opts => { asc => 1, offset => 0 }, + opts => { offset => 0 }, }, $class; } diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index 8da30c19c..5e6bfc68b 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -158,6 +158,11 @@ sub get_thread { } $opts ||= {}; $opts->{limit} ||= 1000; + + # always sort threads by timestamp, this makes life easier + # for the threading algorithm (in SearchThread.pm) + $opts->{asc} = 1; + _do_enquire($self, $qtid, $opts); } diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index c2e1ae76a..ec5f7e0f1 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -327,7 +327,7 @@ sub stream_thread ($$) { sub thread_html { my ($ctx) = @_; my $mid = $ctx->{mid}; - my $sres = $ctx->{srch}->get_thread($mid, { asc => 1 }); + my $sres = $ctx->{srch}->get_thread($mid); my $msgs = load_results($sres); my $nr = $sres->{total}; return missing_thread($ctx) if $nr == 0;