From 8ddf729a92a93375f8f936d350eb920969f29471 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 15 Aug 2026 23:27:35 -0700 Subject: [PATCH] Fix geocode map race between job feed and worker writes --- internal/directory/cache.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/internal/directory/cache.go b/internal/directory/cache.go index 1a2b7bc..451a466 100644 --- a/internal/directory/cache.go +++ b/internal/directory/cache.go @@ -63,6 +63,12 @@ func (c *Cache) geocodeFamilies(model *Model) { key string address string } + pending := []job{} + for key, family := range model.Families { + if family.Address != "" { + pending = append(pending, job{key: key, address: family.Address}) + } + } jobs := make(chan job) var wg sync.WaitGroup var mu sync.Mutex @@ -87,14 +93,10 @@ func (c *Cache) geocodeFamilies(model *Model) { } }() } - total := 0 - for key, family := range model.Families { - if family.Address != "" { - total++ - jobs <- job{key: key, address: family.Address} - } + for _, j := range pending { + jobs <- j } close(jobs) wg.Wait() - log.Printf("geocoded %d of %d family addresses in %s", located, total, time.Since(start).Round(time.Millisecond)) + log.Printf("geocoded %d of %d family addresses in %s", located, len(pending), time.Since(start).Round(time.Millisecond)) }