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
next 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.