b4 review crashes updating a series

Mark Brown <[email protected]>
Newsgroups org.kernel.linux.tools
Message-ID <[email protected]>
Hi,

I'm getting b4 review crashing when I attempt to review this series:

   https://patch.msgid.link/[email protected] 

After I select "Review" I get:

╭────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────╮
│ /usr/lib/python3/dist-packages/textual/worker.py:368 in _run                                                          │
│                                                                                                                       │
│   365 │   │   │   self.state = WorkerState.RUNNING                                                                    │
│   366 │   │   │   app.log.worker(self)                                                                                │
│   367 │   │   │   try:                                                                                                │
│ ❱ 368 │   │   │   │   self._result = await self.run()                                                                 │
│   369 │   │   │   except asyncio.CancelledError as error:                                                             │
│   370 │   │   │   │   self.state = WorkerState.CANCELLED                                                              │
│   371 │   │   │   │   self._error = error                                                                             │
│                                                                                                                       │
│ ╭───────────────────────────────────────────────────── locals ──────────────────────────────────────────────────────╮ │
│ │           app = TrackingApp(title='b4 review', classes={'-dark-mode'}, pseudo_classes={'dark', 'focus'})          │ │
│ │         error = LookupError('Series version 3 not found in retrieved messages')                                   │ │
│ │          self = <Worker                                                                                           │ │
│ │                 │   ERROR                                                                                         │ │
│ │                 │   name='_ws_work'                                                                               │ │
│ │                 │   description='<function TrackingApp._checkout_new_series.<locals>._fetch_and_prepare at        │ │
│ │                 0x7f2b'+9                                                                                         │ │
│ │                 >                                                                                                 │ │
│ │ worker_failed = WorkerFailed("Worker raised exception: LookupError('Series version 3 not found in retrieved       │ │
│ │                 messages')")                                                                                      │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                                       │
│ /usr/lib/python3/dist-packages/textual/worker.py:352 in run                                                           │
│                                                                                                                       │
│   349 │   │   Returns:                                                                                                │
│   350 │   │   │   Return value of the work.                                                                           │
│   351 │   │   """                                                                                                     │
│ ❱ 352 │   │   return await (                                                                                          │
│   353 │   │   │   self._run_threaded() if self._thread_worker else self._run_async()                                  │
│   354 │   │   )                                                                                                       │
│   355                                                                                                                 │
│                                                                                                                       │
│ ╭────────────────────────────────────────────────── locals ───────────────────────────────────────────────────╮       │
│ │ self = <Worker                                                                                              │       │
│ │        │   ERROR                                                                                            │       │
│ │        │   name='_ws_work'                                                                                  │       │
│ │        │   description='<function TrackingApp._checkout_new_series.<locals>._fetch_and_prepare at 0x7f2b'+9 │       │
│ │        >                                                                                                    │       │
│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯       │
│                                                                                                                       │
│ /usr/lib/python3/dist-packages/textual/worker.py:324 in _run_threaded                                                 │
│                                                                                                                       │
│   321 │   │                                                                                                           │
│   322 │   │   loop = asyncio.get_running_loop()                                                                       │
│   323 │   │   assert loop is not None                                                                                 │
│ ❱ 324 │   │   return await loop.run_in_executor(None, runner, self._work)                                             │
│   325 │                                                                                                               │
│   326 │   async def _run_async(self) -> ResultType:                                                                   │
│   327 │   │   """Run an async worker.                                                                                 │
│                                                                                                                       │
│ ╭────────────────────────────────────────────────── locals ───────────────────────────────────────────────────╮       │
│ │ loop = <_UnixSelectorEventLoop running=True closed=False debug=False>                                       │       │
│ │ self = <Worker                                                                                              │       │
│ │        │   ERROR                                                                                            │       │
│ │        │   name='_ws_work'                                                                                  │       │
│ │        │   description='<function TrackingApp._checkout_new_series.<locals>._fetch_and_prepare at 0x7f2b'+9 │       │
│ │        >                                                                                                    │       │
│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯       │
│                                                                                                                       │
│ /usr/lib/python3.13/concurrent/futures/thread.py:59 in run                                                            │
│                                                                                                                       │
│    56 │   │   │   return                                                                       ╭── locals ───╮        │
│    57 │   │                                                                                    │ self = None │        │
│    58 │   │   try:                                                                             ╰─────────────╯        │
│ ❱  59 │   │   │   result = self.fn(*self.args, **self.kwargs)                                                         │
│    60 │   │   except BaseException as exc:                                                                            │
│    61 │   │   │   self.future.set_exception(exc)                                                                      │
│    62 │   │   │   # Break a reference cycle with the exception 'exc'                                                  │
│                                                                                                                       │
│ /usr/lib/python3/dist-packages/textual/worker.py:307 in run_callable                                                  │
│                                                                                                                       │
│   304 │   │   def run_callable(work: Callable[[], ResultType]) -> ResultType:                                         │
│   305 │   │   │   """Set the active worker, and call the callable."""                                                 │
│   306 │   │   │   active_worker.set(self)                                                                             │
│ ❱ 307 │   │   │   return work()                                                                                       │
│   308 │   │                                                                                                           │
│   309 │   │   if (                                                                                                    │
│   310 │   │   │   inspect.iscoroutinefunction(self._work)                                                             │
│                                                                                                                       │
│ ╭────────────────────────────────────────────────── locals ───────────────────────────────────────────────────╮       │
│ │ self = <Worker                                                                                              │       │
│ │        │   ERROR                                                                                            │       │
│ │        │   name='_ws_work'                                                                                  │       │
│ │        │   description='<function TrackingApp._checkout_new_series.<locals>._fetch_and_prepare at 0x7f2b'+9 │       │
│ │        >                                                                                                    │       │
│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯       │
│                                                                                                                       │
│ /home/broonie/git/b4/src/b4/review_tui/_tracking_app.py:1220 in _fetch_and_prepare                                    │
│                                                                                                                       │
│   1217 │   │   │   │   msgs = b4.review.retrieve_series_messages(series, self._identifier)                            │
│   1218 │   │   │   │   self._refresh_msg_count(series, len(msgs))                                                     │
│   1219 │   │   │   │   wantver = series.get('revision')                                                               │
│ ❱ 1220 │   │   │   │   lser = b4.review._get_lore_series(msgs, wantver=wantver)                                       │
│   1221 │   │   │   │                                                                                                  │
│   1222 │   │   │   │   am_msgs = lser.get_am_ready(                                                                   │
│   1223 │   │   │   │   │   noaddtrailers=True, addmysob=False, addlink=False,                                         │
│                                                                                                                       │
│ ╭───────────────────────────────────────────────────── locals ──────────────────────────────────────────────────────╮ │
│ │    msgs = [                                                                                                       │ │
│ │           │   <email.message.EmailMessage object at 0x7f2b4ba5e490>,                                              │ │
│ │           │   <email.message.EmailMessage object at 0x7f2b4be6a170>                                               │ │
│ │           ]                                                                                                       │ │
│ │    self = TrackingApp(title='b4 review', classes={'-dark-mode'}, pseudo_classes={'dark', 'focus'})                │ │
│ │  series = {                                                                                                       │ │
│ │           │   'track_id': 224,                                                                                    │ │
│ │           │   'change_id': '20260319-asoc-dt-bindings-hisilicon-convert-hi6210-i2s-to-dt-schema-623a5c48cf16',    │ │
│ │           │   'revision': 3,                                                                                      │ │
│ │           │   'subject': 'ASoC: dt-bindings: hisilicon: Convert hi6210 I2S to dt-schema',                         │ │
│ │           │   'sender_name': 'Chaitanya Sabnis',                                                                  │ │
│ │           │   'sender_email': '[email protected]',                                                      │ │
│ │           │   'sent_at': '2026-03-19T08:51:12+05:30',                                                             │ │
│ │           │   'added_at': '2026-03-31T14:54:17.878636+00:00',                                                     │ │
│ │           │   'status': 'new',                                                                                    │ │
│ │           │   'num_patches': 1,                                                                                   │ │
│ │           │   ... +11                                                                                             │ │
│ │           }                                                                                                       │ │
│ │ wantver = 3                                                                                                       │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                                       │
│ /home/broonie/git/b4/src/b4/review/_review.py:229 in _get_lore_series                                                 │
│                                                                                                                       │
│    226 │   if wantver is None:                                                                                        │
│    227 │   │   wantver = max(lmbx.series.keys())                                                                      │
│    228 │   if wantver not in lmbx.series:                                                                             │
│ ❱  229 │   │   raise LookupError(f'Series version {wantver} not found in retrieved messages')                         │
│    230 │   lser = lmbx.get_series(wantver, sloppytrailers=sloppytrailers,                                             │
│    231 │   │   │   │   │   │      codereview_trailers=False)                                                          │
│    232 │   if not lser:                                                                                               │
│                                                                                                                       │
│ ╭──────────────────────────────────────────── locals ─────────────────────────────────────────────╮                   │
│ │           lmbx = - Series: [v2] ASoC: dt-bindings: hisilicon: Convert hi6210 I2S to dt-schema   │                   │
│ │                    author: Chaitanya Sabnis <[email protected]>                       │                   │
│ │                    revision: 2                                                                  │                   │
│ │                    expected: 1                                                                  │                   │
│ │                    complete: True                                                               │                   │
│ │                    has_cover: False                                                             │                   │
│ │                    base_commit: None                                                            │                   │
│ │                    change_id: None                                                              │                   │
│ │                    partial_reroll: False                                                        │                   │
│ │                    patches:                                                                     │                   │
│ │                  │   [0/1] MISSING                                                              │                   │
│ │                  │   [1/1] ASoC: dt-bindings: hisilicon: Convert hi6210 I2S to dt-schema        │                   │
│ │                  --- Followups ---                                                              │                   │
│ │                    Re: [PATCH v2] ASoC: dt-bindings: hisilicon: Convert hi6210 I2S to dt-schema │                   │
│ │                  --- Unknowns ---                                                               │                   │
│ │            msg = <email.message.EmailMessage object at 0x7f2b4be6a170>                          │                   │
│ │           msgs = [                                                                              │                   │
│ │                  │   <email.message.EmailMessage object at 0x7f2b4ba5e490>,                     │                   │
│ │                  │   <email.message.EmailMessage object at 0x7f2b4be6a170>                      │                   │
│ │                  ]                                                                              │                   │
│ │ sloppytrailers = False                                                                          │                   │
│ │        wantver = 3                                                                              │                   │
│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯                   │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
LookupError: Series version 3 not found in retrieved messages

Thanks,
Mark
signature.asc (application/pgp-signature, 488 B)
-----BEGIN PGP SIGNATURE-----

iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmnL4mYACgkQJNaLcl1U
h9A/PAf9GQFBs4YkBbIJaQNZ4vdrTWgb9wxcEpoyKYPST4v86VHOU4CgB+KwHpCu
sCJcuKW27UHyxm/D9HiFbJ5fw3pCaGPw+0AfahLyviEtYj9BZVMOvv+3PLSxsjKG
W3Vi1YkYvw2yiuQyBOZVLnnWg2oVcqni7uk/LYzorcF9SXhKufAfreKR8kEtI9QV
qYLXkqyHQP71/72yh3OYdcApXSlN1UcqdiyrsNyosXlOFMHTTeuIFnfbahNfuwHd
0U+hIchVNP7HlukUxr0Mo5ZuEnB43GEjY2B0247DNNpmwa+zj1B+jO3/ysIZ7YH6
3GokaEuyyLPZTpbB45kuzsCQ5gCRBg==
=wJBT
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.