@@ -43,6 +43,17 @@ type rankingScore struct {
4343}
4444
4545func main () {
46+ cleanupFailures := make ([]error , 0 , 2 )
47+ defer func () {
48+ if len (cleanupFailures ) == 0 {
49+ return
50+ }
51+ for _ , cleanupErr := range cleanupFailures {
52+ log .Printf ("cleanup failed: %v" , cleanupErr )
53+ }
54+ os .Exit (1 )
55+ }()
56+
4657 assetsDir := strings .TrimSpace (os .Getenv (assetsDirEnvVar ))
4758 if assetsDir == "" {
4859 assetsDir = defaultAssetsDir
@@ -66,7 +77,7 @@ func main() {
6677 }
6778 defer func () {
6879 if destroyErr := ort .DestroyEnvironment (); destroyErr != nil {
69- log . Printf ("failed to destroy ONNX Runtime environment: %v " , destroyErr )
80+ cleanupFailures = append ( cleanupFailures , fmt . Errorf ("failed to destroy ONNX Runtime environment: %w " , destroyErr ) )
7081 }
7182 }()
7283
@@ -86,7 +97,7 @@ func main() {
8697 }
8798 defer func () {
8899 if closeErr := embedder .Close (); closeErr != nil {
89- log . Printf ("failed to close OpenCLIP embedder: %v " , closeErr )
100+ cleanupFailures = append ( cleanupFailures , fmt . Errorf ("failed to close OpenCLIP embedder: %w " , closeErr ) )
90101 }
91102 }()
92103
@@ -137,22 +148,24 @@ func parsePositiveIntEnv(key string, fallback int) (int, error) {
137148 return value , nil
138149}
139150
140- func loadExamplesFromManifest (assetsDir string , limit int ) ([]manifestRow , []image.Image , []string , error ) {
151+ func loadExamplesFromManifest (assetsDir string , limit int ) (rows []manifestRow , images []image.Image , texts []string , retErr error ) {
141152 manifestPath := filepath .Join (assetsDir , manifestFileName )
142153 file , err := os .Open (manifestPath )
143154 if err != nil {
144155 return nil , nil , nil , fmt .Errorf ("failed to open manifest %q: %w" , manifestPath , err )
145156 }
146157 defer func () {
147- _ = file .Close ()
158+ if closeErr := file .Close (); retErr == nil && closeErr != nil {
159+ retErr = fmt .Errorf ("failed to close manifest %q: %w" , manifestPath , closeErr )
160+ }
148161 }()
149162
150163 scanner := bufio .NewScanner (file )
151164 scanner .Buffer (make ([]byte , 0 , 64 * 1024 ), 2 * 1024 * 1024 )
152165
153- rows : = make ([]manifestRow , 0 , limit )
154- images : = make ([]image.Image , 0 , limit )
155- texts : = make ([]string , 0 , limit )
166+ rows = make ([]manifestRow , 0 , limit )
167+ images = make ([]image.Image , 0 , limit )
168+ texts = make ([]string , 0 , limit )
156169
157170 lineNumber := 0
158171 for scanner .Scan () {
@@ -177,7 +190,7 @@ func loadExamplesFromManifest(assetsDir string, limit int) ([]manifestRow, []ima
177190 imagePath := filepath .Join (assetsDir , row .File )
178191 img , err := decodeImageFile (imagePath )
179192 if err != nil {
180- return nil , nil , nil , fmt .Errorf ("failed to decode image %q: %w" , imagePath , err )
193+ return nil , nil , nil , fmt .Errorf ("failed to load image %q: %w" , imagePath , err )
181194 }
182195
183196 rows = append (rows , row )
@@ -222,13 +235,15 @@ func validateManifestRow(row manifestRow) error {
222235 return nil
223236}
224237
225- func decodeImageFile (path string ) (image.Image , error ) {
238+ func decodeImageFile (path string ) (retImg image.Image , retErr error ) {
226239 file , err := os .Open (path )
227240 if err != nil {
228- return nil , err
241+ return nil , fmt . Errorf ( "open %q: %w" , path , err )
229242 }
230243 defer func () {
231- _ = file .Close ()
244+ if closeErr := file .Close (); retErr == nil && closeErr != nil {
245+ retErr = fmt .Errorf ("close %q: %w" , path , closeErr )
246+ }
232247 }()
233248
234249 img , _ , err := image .Decode (file )
0 commit comments