fixing error handling for no build number found
Also fixes null pointer reference bugs in db connection and query methods.
BUG=b/239224440
Change-Id: I29083e120e4fd54590c48b00be3eaf4f4a55e2fd
Reviewed-on: https://cos-review.googlesource.com/c/cos/tools/+/35707
Tested-by: Bridget Agyare <bridgetagyare@google.com>
Reviewed-by: Arnav Kansal <rnv@google.com>
Cloud-Build: Arnav Kansal <rnv@google.com>
diff --git a/src/cmd/changelog-webapp/controllers/pageHandlers.go b/src/cmd/changelog-webapp/controllers/pageHandlers.go
index d421f8c..4b7643a 100644
--- a/src/cmd/changelog-webapp/controllers/pageHandlers.go
+++ b/src/cmd/changelog-webapp/controllers/pageHandlers.go
@@ -530,11 +530,6 @@
handleError(w, r, utilErr, "/findreleasedbuild/")
return
}
- if buildData == nil {
- log.Errorf("CL %s not found", cl)
- handleError(w, r, utilErr, "/findreleasedbuild/")
- return
- }
gerritLink := gerrit + "/c/" + buildData.CLNum
diff --git a/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html b/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html
index 3b88a41..7e3a1ab 100644
--- a/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html
+++ b/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html
@@ -22,7 +22,7 @@
<p class="feature-info">
Find the first Container-Optimized OS released build containing a desired
changelist.<br>
- Example input: <b>3280</b> or
+ Example input: <b>3280</b>
</p>
<p class="feature-info">
<b>Note:</b> It is possible that COS build was released with the cl number so please check out the Landed in tab.
@@ -65,10 +65,17 @@
</form>
<div class="locate-build-result">
{{if (ne .BuildNum "")}}
- <p>
- <a href={{.GerritLink}} target="_blank"> CL {{.CLNum}}</a>
- released in build <b>{{.BuildNum}}</b>.
- </p>
+ {{if (ne .BuildNum "0.000.0")}}
+ <p>
+ <a href={{.GerritLink}} target="_blank"> CL {{.CLNum}}</a>
+ released in build <b>{{.BuildNum}}</b>.
+ </p>
+ {{else}}
+ <p>
+ <a href={{.GerritLink}} target="_blank"> CL {{.CLNum}}</a>
+ no released build found.
+ </p>
+ {{end}}
{{end}}
</div>
</div>
diff --git a/src/pkg/findbuild/findbuild.go b/src/pkg/findbuild/findbuild.go
index 0a0ecc6..d0f0b48 100644
--- a/src/pkg/findbuild/findbuild.go
+++ b/src/pkg/findbuild/findbuild.go
@@ -657,6 +657,7 @@
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@cloudsql(%s)/%s", user, password, connectionName, dbName))
if err != nil {
log.Fatalf("Could not open db: %v", err)
+ return nil, utils.InternalServerError
}
// query database
// SELECT release_build_number FROM DBName WHERE cLNumber = request.CL;
@@ -664,10 +665,12 @@
rows, err := db.Query(queryStmt, request.CL)
if err != nil {
log.Fatalf("Could not query db: %v", err)
+ return nil, utils.InternalServerError
}
// change rows to BuildResponse type
defer rows.Close()
var releasedBuildNumber string
+ releasedBuild := BuildResponse{}
if rows.Next() {
if err := rows.Scan(&releasedBuildNumber); err != nil {
log.Errorf("Could not scan result: %v", err)
@@ -675,12 +678,13 @@
}
} else {
log.Errorf("No build number found")
- return nil, nil
+ releasedBuild.BuildNum = "0.000.0"
+ releasedBuild.CLNum = request.CL
+ return &releasedBuild, nil
}
if rows.Next() {
log.Errorf("More than one build number found")
}
- releasedBuild := BuildResponse{}
releasedBuild.BuildNum = releasedBuildNumber
releasedBuild.CLNum = request.CL
return &releasedBuild, nil