New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Force par-check for nzbs without archives #525

Closed
bgeet opened this Issue Mar 25, 2018 · 5 comments

Comments

Projects
None yet
2 participants
@bgeet

bgeet commented Mar 25, 2018

Use-case
Usenet post consisting of a single multimedia file and PAR2-set.

Current behaviour
NZBGet 19.1 does not verify a single multimedia file by default (ParCheck: Auto) even tho CRC checksum for it exists in the main PAR2. ParQuick could verify it in little time.

Just relying on Yenc checksums of segments is not enough because:

  • CRC32 is not mandatory for Yenc
  • Corruption might have happened only later during Yenc encoding and PAR2-set is unaffected
  • NZB could be incomplete and missing segments

So you might end up with a silently corrupted multimedia file, which might even play at first but then glitches.

Expected behaviour
Same behaviour as for archived files (at least RAR4/5) which verify CRC of the files (while unpacking).

Possible solution
ParQuick always verifies non-archived files such as a single multimedia file.

Current Workaround
Set ParCheck to Always.
But then you do two CRC verifications of the same file if it's archived because archives have their own CRC checksums (at least RAR4/5).
N.b. that's what SABnzbd 2.3.2 does by default.

@hugbug

This comment has been minimized.

Member

hugbug commented Mar 25, 2018

I consider non-archive posts to be a rare thing which isn't worth a special solution.

Anyway you can set ParCheck=always and ParQuick=yes and you'll have the files always (quickly) verified.

@bgeet

This comment has been minimized.

bgeet commented Mar 25, 2018

Thanks for your fast reply!

Disagree on them being that rare:

  • in some circles like anime they are the norm
  • non-archive posts should be the future as there are no advantages in splitting files into archives in most cases (besides keeping legacy tools happy or if you want to encrypt) - only adds overhead

If you don't want do to anything special, do you consider ParCheck=always and ParQuick=yes too be cheap enough to make them default similar to SABnzbd 2.3.2?
Would even give faster failures than waiting for unpack to error out for corrupted archives.

@hugbug

This comment has been minimized.

Member

hugbug commented Mar 25, 2018

Disagree on them being that rare:

Anime is what I mean with rare ;) Most users download movies and episodes.

Non-archive posts was the future 10 years ago too, yet all posts are still archived (expect the rar ones from certain circles).

The purpose of ParCheck=auto is to avoid unnecessary work (even small work). Making ParCheck=always by default isn't good as the vast majority of users don't need it.

Even users who download anime must have very bad luck to fall into the case where ParCheck=auto wouldn't catch the corruption. Have you had such failures in NZBGet or is this an imaginary case (in which case the solution with ParCheck=always is good enough)?

If you can convince me that such failures happen in NZBGet in real life I'll consider implementing the feature you are asking. Especially if you have logs of failed downloads; I mean real downloads, not some artificially modified nzb-files causing failures.

Fair?

@bgeet

This comment has been minimized.

bgeet commented Mar 25, 2018

Non-archive posts was the future 10 years ago too, yet all posts are still archived (expect the rar ones from certain circles).

Can't have the superior future when tools aren't ready. It's a chicken and egg problem.
Considering that most existing archive movie and tv posts are getting dmca'ed pretty fast, convincing some auto-posters to post non-archives can make that the majority pretty fast.

Sic TLS where SABnzbd and NZBGet made a change for the better.

Have you had such failures in NZBGet or is this an imaginary case (in which case the solution with ParCheck=always is good enough)?

Yes, incomplete NZBs happen.
For example:

  • some indexers start indexing right away and give you incomplete NZBs in the meantime
  • incomplete posts
  • broken nzb generation for other reasons

In some cases par2 is already part of the NZB and could verify files.

Especially if you have logs of failed downloads; I mean real downloads, not some artificially modified nzb-files causing failures.

Here's some incomplete post that would be par2 recoverable:
https://www.binsearch.info/?b=BigBuckBunny_320x180&g=alt.binaries.test&p=Snazzy+Poster+%3Cme%40localhost.localdomain%3E&max=250
ParCheck=auto does not verify it and you get a successful download that isn't:
BigBuckBunny_320x180.log

Crashes and dropped internet connections that lead to incomplete posts still do happen in the real world.

Even users who download anime must have very bad luck to fall into the case where ParCheck=auto wouldn't catch the corruption.

Corollary for archive posts:
Archives get additional CRC checking during unpacking.
So if you have data that show that CRC errors happen during unpacking despite ParCheck=auto, those should roughly translate to the non-archive case when file verification would be useful, too.

@hugbug hugbug added the feature label May 30, 2018

@hugbug hugbug added this to the v21 milestone May 30, 2018

@hugbug hugbug changed the title from Verify files if possible to Force par-check for nzbs without archives May 30, 2018

hugbug added a commit that referenced this issue Jun 19, 2018

@hugbug

This comment has been minimized.

Member

hugbug commented Jun 19, 2018

Implemented in develop for v21.

If you want to give it a try (and you don't compile yourself) - send me a note to nzbget@gmail.com with info about your platform and I'll send you current development version.

@hugbug hugbug closed this Jun 19, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment