From 71d0581a309ca83cf3be538141435111db8ed290 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 10 Dec 2016 01:09:51 +0000 Subject: [PATCH] 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. --- lib/PublicInbox/Mbox.pm | 2 +- lib/PublicInbox/Search.pm | 5 +++++ lib/PublicInbox/View.pm | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/PublicInbox/Mbox.pm b/lib/PublicInbox/Mbox.pm index fd623f6d..2565ea58 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 8da30c19..5e6bfc68 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 c2e1ae76..ec5f7e0f 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; -- 2.44.0