I think we're making some progress on identifying issues similar to
that, it turns out that the transaction handling is somewhat broken: If
an `apt update` is cancelled, a partial transaction is committed, as we
have no way to identify if a transaction is complete or not.

The confusing issue here is why we request Packages files that no longer
exist. Fundamentally the problem should not happen because we request
Packages files by their hash; but if we get an outdated hash and it no
longer exists, we obviously are correct to fail.

The question is where we get the outdated hash from. If it's from the
existing InRelease file, then it should not be fetching the file in the
first place because the current copy should be up-to-date.

That being said, the files affected here are files not currently
present: i.e. we have enabled new index types (cnf) as well as
additional components (universe, multiverse, restricted).

I do not believe that the lists are actually in a bad state, rather what
happens is that the mirror is in a bad state: It reports that our
InRelease file is still up-to-date when we perform the If-Modified-Since
request to update it.

That would explain the rest of the outcome: Given that the file is still
up-to-date, a new copy did not appear in partial/ and now we try to
fetch the new index files and fail because they don't exist. Some
confusion there may be which error is reported, i.e. it's possible we
are falling back to requesting by name rather than hash due to the 404
and then end up with the wrong file (hence the size mismatch).

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/2107223

Title:
  mirror sync in progress, but the situation improves if `rm -fr
  /var/lib/apt/lists`

Status in apt package in Ubuntu:
  New

Bug description:
  A not-uncommon bug for Subiquity is one that looks like LP: #2105480,
  but we have seen many like it and that's just one example.  In
  summary, some files will fail to download from the mirror with the
  message "Mirror sync in progress?"

  For reasons I don't understand just yet, it seems /var/lib/apt/lists
  can get into a bad state.  `apt-get update` just produces the "Mirror
  sync in progress?".  The way to recover from it is to remove
  /var/lib/apt/lists entirely and start over.  After removing
  /var/lib/apt/lists, `apt-get update` and subsequent operations perform
  as expected.

  I have a live example for you, I don't know if this reproducer
  requires certain mirror state or not.  Attached to this bug is a copy
  of /var/lib/apt/lists, and if you populate your test system
  /var/lib/apt/lists with the contents of this tarball and configure the
  system to hit mirror is.archive.ubuntu.com for series plucky, you may
  see errors like this:

  Err:14 http://is.archive.ubuntu.com/ubuntu plucky/universe amd64 Packages
    404  Not Found [IP: 176.57.227.242 443]
    File has unexpected size (15764540 != 16133052). Mirror sync in progress? 
[IP: 176.57.227.242 443]

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/2107223/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to