internal/fetch: make too many packages a ModuleTooLarge error

If a module has too many packages, we were returning an error with
no code, so the worker was returning 500 and we would retry the module.
This led to a glut of large modules, swamping the worker.

This CL returns a ModuleTooLarge error in that case, which will avoid
reprocessing.

Change-Id: Iaafa2a790278d1339d5ce49fd6ef2d0ee57d48e6
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/399365
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
diff --git a/internal/fetch/package.go b/internal/fetch/package.go
index b536a1a..b409ae4 100644
--- a/internal/fetch/package.go
+++ b/internal/fetch/package.go
@@ -159,7 +159,8 @@
 		}
 		dirs[innerPath] = append(dirs[innerPath], pathname)
 		if len(dirs) > maxPackagesPerModule {
-			return fmt.Errorf("%d packages found in %q; exceeds limit %d for maxPackagePerModule", len(dirs), modulePath, maxPackagesPerModule)
+			return fmt.Errorf("%d packages found in %q; exceeds limit %d for maxPackagePerModule: %w",
+				len(dirs), modulePath, maxPackagesPerModule, derrors.ModuleTooLarge)
 		}
 		return nil
 	})