All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Cc: tools@linux.kernel.org
Subject: [PATCH] Remove URL redirect project lookup
Date: Thu, 24 Feb 2022 21:11:35 -0600	[thread overview]
Message-ID: <20220225031135.4136158-1-robh@kernel.org> (raw)

Now that lore indexes all messages, there's no need to lookup the project
for the message-id. If the project is not specified, then 'all' is used.

The primary benefit of this change is that cached accesses can now work
offline instead of splatting with a network error.

Signed-off-by: Rob Herring <robh@kernel.org>
---

My usecase is twofold. First I want to speed up opening a thread by 
having it fetched in the background and cached. Second, I want to be 
able to work offline by fetching a list of threads (my PW queue) in 
advance and using the offline copy. With a sufficiently long cache 
timeout, the cache works perfectly for this use. Though maybe a 'use the 
cache if there's a network failure' mode is needed instead of always 
timing out the cache.

I also have this working using b4 to fetch my queue to an mbox and 
then using the 'use local mbox' option. This mostly works except for 
the handling of 'From ' in message bodies which is problematic for mbox 
format. The cache manages to avoid this problem.

Rob

 b4/__init__.py | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/b4/__init__.py b/b4/__init__.py
index 0d506bbaa649..ec1a6da44144 100644
--- a/b4/__init__.py
+++ b/b4/__init__.py
@@ -2235,6 +2235,9 @@ def get_pi_thread_by_url(t_mbx_url, nocache=False):
         logger.critical('Grabbing thread from %s', t_mbx_url.split('://')[1])
         session = get_requests_session()
         resp = session.get(t_mbx_url)
+        if resp.status_code == 404:
+            logger.critical('That message-id is not known.')
+            return None
         if resp.status_code != 200:
             logger.critical('Server returned an error: %s', resp.status_code)
             return None
@@ -2263,22 +2266,10 @@ def get_pi_thread_by_url(t_mbx_url, nocache=False):
 def get_pi_thread_by_msgid(msgid, useproject=None, nocache=False, onlymsgids: Optional[set] = None):
     qmsgid = urllib.parse.quote_plus(msgid)
     config = get_main_config()
-    # Grab the head from lore, to see where we are redirected
-    midmask = config['midmask'] % qmsgid
-    loc = urllib.parse.urlparse(midmask)
-    if useproject:
-        projurl = '%s://%s/%s' % (loc.scheme, loc.netloc, useproject)
-    else:
-        logger.info('Looking up %s', midmask)
-        session = get_requests_session()
-        resp = session.head(midmask)
-        if resp.status_code < 300 or resp.status_code > 400:
-            logger.critical('That message-id is not known.')
-            return None
-        # Pop msgid from the end of the redirect
-        chunks = resp.headers['Location'].rstrip('/').split('/')
-        projurl = '/'.join(chunks[:-1])
-        resp.close()
+    loc = urllib.parse.urlparse(config['midmask'])
+    if not useproject:
+        useproject = 'all'
+    projurl = '%s://%s/%s' % (loc.scheme, loc.netloc, useproject)
     t_mbx_url = '%s/%s/t.mbox.gz' % (projurl, qmsgid)
     logger.debug('t_mbx_url=%s', t_mbx_url)
 
-- 
2.32.0


             reply	other threads:[~2022-02-25  3:11 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-25  3:11 Rob Herring [this message]
2022-03-21 16:41 ` [PATCH] Remove URL redirect project lookup Rob Herring
2022-03-21 21:59   ` Konstantin Ryabitsev
2022-06-14 20:27 ` Konstantin Ryabitsev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220225031135.4136158-1-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=konstantin@linuxfoundation.org \
    --cc=tools@linux.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.