Skip to content

Commit 9e18dd3

Browse files
committed
fix: resolve PR #316 issues [batch]
1 parent 859ae5a commit 9e18dd3

4 files changed

Lines changed: 155 additions & 144 deletions

File tree

engine/project/indexer.go

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,10 @@ func (p *Config) indexProjectTools(
250250
return fmt.Errorf("project tool at index %d missing id", i)
251251
}
252252
key := resources.ResourceKey{Project: p.Name, Type: resources.ResourceTool, ID: tool.ID}
253-
value := tool
253+
keyCopy := key
254+
toolCopy := tool
254255
group.Go(func() error {
255-
return p.putResourceWithMeta(ctx, store, metaSources, key, value)
256+
return p.putResourceWithMeta(ctx, store, metaSources, keyCopy, toolCopy)
256257
})
257258
}
258259
return nil
@@ -279,9 +280,10 @@ func (p *Config) indexProjectMemories(
279280
return fmt.Errorf("memory '%s' validation failed: %w", memory.ID, err)
280281
}
281282
key := resources.ResourceKey{Project: p.Name, Type: resources.ResourceMemory, ID: memory.ID}
282-
value := memory
283+
keyCopy := key
284+
mem := memory
283285
group.Go(func() error {
284-
return p.putResourceWithMeta(ctx, store, metaSources, key, value)
286+
return p.putResourceWithMeta(ctx, store, metaSources, keyCopy, mem)
285287
})
286288
}
287289
return nil
@@ -301,9 +303,10 @@ func (p *Config) indexProjectSchemas(
301303
continue
302304
}
303305
key := resources.ResourceKey{Project: p.Name, Type: resources.ResourceSchema, ID: sid}
304-
value := schemaValue
306+
keyCopy := key
307+
schemaCopy := schemaValue
305308
group.Go(func() error {
306-
return p.putResourceWithMeta(ctx, store, metaSources, key, value)
309+
return p.putResourceWithMeta(ctx, store, metaSources, keyCopy, schemaCopy)
307310
})
308311
}
309312
return nil
@@ -323,9 +326,10 @@ func (p *Config) indexProjectModels(
323326
}
324327
id := fmt.Sprintf("%s:%s", string(model.Provider), model.Model)
325328
key := resources.ResourceKey{Project: p.Name, Type: resources.ResourceModel, ID: id}
326-
value := model
329+
keyCopy := key
330+
modelCopy := model
327331
group.Go(func() error {
328-
return p.putResourceWithMeta(ctx, store, metaSources, key, value)
332+
return p.putResourceWithMeta(ctx, store, metaSources, keyCopy, modelCopy)
329333
})
330334
}
331335
return nil
@@ -343,9 +347,10 @@ func (p *Config) indexProjectEmbedders(
343347
return fmt.Errorf("project embedder at index %d missing id", i)
344348
}
345349
key := resources.ResourceKey{Project: p.Name, Type: resources.ResourceEmbedder, ID: embedder.ID}
346-
value := embedder
350+
keyCopy := key
351+
embedderCopy := embedder
347352
group.Go(func() error {
348-
return p.putResourceWithMeta(ctx, store, metaSources, key, value)
353+
return p.putResourceWithMeta(ctx, store, metaSources, keyCopy, embedderCopy)
349354
})
350355
}
351356
return nil
@@ -363,9 +368,10 @@ func (p *Config) indexProjectVectorDBs(
363368
return fmt.Errorf("project vector_db at index %d missing id", i)
364369
}
365370
key := resources.ResourceKey{Project: p.Name, Type: resources.ResourceVectorDB, ID: vectorDB.ID}
366-
value := vectorDB
371+
keyCopy := key
372+
vectorDBCopy := vectorDB
367373
group.Go(func() error {
368-
return p.putResourceWithMeta(ctx, store, metaSources, key, value)
374+
return p.putResourceWithMeta(ctx, store, metaSources, keyCopy, vectorDBCopy)
369375
})
370376
}
371377
return nil
@@ -386,9 +392,10 @@ func (p *Config) indexProjectKnowledgeBases(
386392
knowledgeBase.Ingest = knowledge.IngestManual
387393
}
388394
key := resources.ResourceKey{Project: p.Name, Type: resources.ResourceKnowledgeBase, ID: knowledgeBase.ID}
389-
value := knowledgeBase
395+
keyCopy := key
396+
knowledgeBaseCopy := knowledgeBase
390397
group.Go(func() error {
391-
return p.putResourceWithMeta(ctx, store, metaSources, key, value)
398+
return p.putResourceWithMeta(ctx, store, metaSources, keyCopy, knowledgeBaseCopy)
392399
})
393400
}
394401
return nil

sdk/compozy/loader.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import (
1616

1717
var yamlExtensions = []string{".yaml", ".yml"}
1818

19+
const defaultFilteredFilesCapacity = 8
20+
1921
func requireContext(ctx context.Context) error {
2022
if ctx == nil {
2123
return fmt.Errorf("context is required")
@@ -43,28 +45,43 @@ type cwdSetter interface {
4345

4446
func loadYAML[T any](ctx context.Context, engine *Engine, path string) (T, string, error) {
4547
var zero T
48+
log := logger.FromContext(ctx)
49+
logFailure := func(target string, err error) {
50+
if err == nil || log == nil {
51+
return
52+
}
53+
log.Error("failed to load YAML", "path", target, "error", err)
54+
}
55+
requestedPath := strings.TrimSpace(path)
4656
if err := requireContext(ctx); err != nil {
57+
logFailure(requestedPath, err)
4758
return zero, "", err
4859
}
4960
trimmed, cfg, err := prepareLoadContext(engine, path)
5061
if err != nil {
62+
logFailure(requestedPath, err)
5163
return zero, "", err
5264
}
5365
if err := contextError(ctx); err != nil {
66+
logFailure(trimmed, err)
5467
return zero, "", err
5568
}
5669
data, abs, err := readYAMLFile(trimmed, cfg.Limits.MaxConfigFileSize)
5770
if err != nil {
71+
logFailure(trimmed, err)
5872
return zero, "", err
5973
}
6074
if err := contextError(ctx); err != nil {
75+
logFailure(trimmed, err)
6176
return zero, "", err
6277
}
6378
value, err := decodeYAML[T](data, trimmed)
6479
if err != nil {
80+
logFailure(trimmed, err)
6581
return zero, "", err
6682
}
6783
if err := contextError(ctx); err != nil {
84+
logFailure(trimmed, err)
6885
return zero, "", err
6986
}
7087
applyYAMLMetadata(engine.ctx, value, abs)
@@ -141,7 +158,11 @@ func filteredYAMLFiles(ctx context.Context, dir string) ([]string, error) {
141158
if err != nil {
142159
return nil, fmt.Errorf("read dir %s: %w", dir, err)
143160
}
144-
files := make([]string, 0, len(entries))
161+
filesCap := len(entries)
162+
if filesCap < defaultFilteredFilesCapacity {
163+
filesCap = defaultFilteredFilesCapacity
164+
}
165+
files := make([]string, 0, filesCap)
145166
for _, entry := range entries {
146167
if err := contextError(ctx); err != nil {
147168
return nil, err

0 commit comments

Comments
 (0)