[APICORE-980] Propagate gdal error messages instead of completely obfuscating them#6
Draft
daniel-cohen wants to merge 1 commit into
Draft
[APICORE-980] Propagate gdal error messages instead of completely obfuscating them#6daniel-cohen wants to merge 1 commit into
daniel-cohen wants to merge 1 commit into
Conversation
Author
|
Quick test to simulate the sourcephotos failures: package main
import (
"fmt"
"net/http"
"net/http/httptest"
"net/url"
"github.com/nearmap/gdal"
)
func main() {
//test server:
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
http.Error(w, "404 page not found", http.StatusNotFound)
return
}))
defer server.Close()
// GDAL's usage of libcurl doesn't like unescaped paths.
path := "/photos-proxy/v1/hv-readonly01-ap-southeast-2/HyperStorage/ReadOnly/Projects/Maps/NSW.SydneyTest.421, AU/Surveys/2022-10-29 (Oct 2022) 080222/Photos/2022-10-29 0802/Line-003/Tilt-2/2233_511749.150232.tif"
path = url.PathEscape(path)
sampleRequestURL := fmt.Sprintf("/vsicurl/%s/%s", server.URL, path)
fmt.Println("New error:")
ds, err := gdal.OpenWithError(sampleRequestURL, gdal.ReadOnly)
if err != nil {
fmt.Println("---------------------------------------------")
fmt.Printf("GDAL ERROR: %v\n", err)
fmt.Println("---------------------------------------------")
} else {
fmt.Println("+++++++++++++++++++++++++++++++++++++++++++++")
fmt.Println("no error")
fmt.Printf("ds=%v\n", ds)
fmt.Println("+++++++++++++++++++++++++++++++++++++++++++++")
}
// old error:
fmt.Println("old error:")
ds, err = gdal.Open(sampleRequestURL, gdal.ReadOnly)
if err != nil {
fmt.Println("---------------------------------------------")
fmt.Printf("GDAL ERROR: %v\n", err)
fmt.Println("---------------------------------------------")
} else {
fmt.Println("+++++++++++++++++++++++++++++++++++++++++++++")
fmt.Println("no error")
fmt.Printf("ds=%v\n", ds)
fmt.Println("+++++++++++++++++++++++++++++++++++++++++++++")
}
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is an initial draft PR to discuss the change.
We initially did not want to rely on string messages to determine 404 errors, But I think this will be an improvement for API consumer . This will allow us to determine if the file is actually missing in s3 and return a 404.
if we want to remain 100% backwards compatible, we can create a new function and leave the current
gdal.Openas is.The new function can be used in sourcephotos:
Some example outputs:
For 404:
Couldn't resolve host:
I was messing around and added "xx" to the URL
This was in the logs when I enabled full verbose GDAL logs: