internal/frontend: handle fetch errors from DB.InsertModule

When an error occurs due to DB.InsertModule, that error is now inserted
into version_map. Otherwise, we'll keep polling version_map for a result
until it times out. This bug only affected local development.

Change-Id: Iad3a2a9435c1830efcdd2c34e5d55c6e89c85886
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/259216
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/frontend/fetch.go b/internal/frontend/fetch.go
index 8ad0958..48ed37f 100644
--- a/internal/frontend/fetch.go
+++ b/internal/frontend/fetch.go
@@ -500,10 +500,12 @@
 		// Only attempt to insert the module into module_version_states if the
 		// fetch process was successful.
 		if err := db.InsertModule(ctx, fr.Module); err != nil {
-			return http.StatusInternalServerError, err
+			fr.Status = http.StatusInternalServerError
+			log.Errorf(ctx, "FetchAndUpdateState(%q, %q): db.InsertModule failed: %v", modulePath, requestedVersion, err)
 		}
 		log.Infof(ctx, "FetchAndUpdateState(%q, %q): db.InsertModule succeeded", modulePath, requestedVersion)
 	}
+
 	var errMsg string
 	if fr.Error != nil {
 		errMsg = fr.Error.Error()