Skip to content

Commit 53f3f23

Browse files
committed
chore(openclip): polish cleanup and read-path error handling
1 parent a1812d7 commit 53f3f23

1 file changed

Lines changed: 26 additions & 11 deletions

File tree

examples/openclip/main.go

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,17 @@ type rankingScore struct {
4343
}
4444

4545
func 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

Comments
 (0)