diff --git a/backend/app/migrator/native.go b/backend/app/migrator/native.go index cf52c528..bf60d834 100644 --- a/backend/app/migrator/native.go +++ b/backend/app/migrator/native.go @@ -109,7 +109,7 @@ func (n *Native) Import(reader io.Reader, siteID string) (size int, err error) { if n.Concurrent > 0 { concurrent = n.Concurrent } - grp := syncs.NewSizedGroup(concurrent) + grp := syncs.NewErrSizedGroup(concurrent, syncs.Preemptive()) for { comment := store.Comment{} @@ -127,21 +127,22 @@ func (n *Native) Import(reader io.Reader, siteID string) (size int, err error) { } // write comments in parallel - grp.Go(func() { + grp.Go(func() error { if _, e := n.DataStore.Create(comment); e != nil { atomic.AddInt64(&failed, 1) log.Printf("[WARN] can't write %+v to store, %s", comment, e) - return + return nil } n := atomic.AddInt64(&comments, 1) if n%1000 == 0 { log.Printf("[DEBUG] imported %d comments", n) } + return nil }) } - grp.Wait() + _ = grp.Wait() if failed > 0 { return int(comments), errors.Errorf("failed to save %d comments", failed) diff --git a/backend/app/rest/api/admin_test.go b/backend/app/rest/api/admin_test.go index c0684ccc..d4848ab8 100644 --- a/backend/app/rest/api/admin_test.go +++ b/backend/app/rest/api/admin_test.go @@ -75,7 +75,7 @@ func TestAdmin_Delete(t *testing.T) { assert.Equal(t, "", cr.Text) assert.True(t, cr.Deleted) - time.Sleep(100 * time.Millisecond) + time.Sleep(250 * time.Millisecond) // check last comments updated res, code = get(t, ts.URL+"/api/v1/last/2?site=radio-t") assert.Equal(t, 200, code) diff --git a/backend/app/store/service/service_test.go b/backend/app/store/service/service_test.go index 82fd5653..99babee2 100644 --- a/backend/app/store/service/service_test.go +++ b/backend/app/store/service/service_test.go @@ -145,6 +145,8 @@ func TestService_SetTitle(t *testing.T) { t.Logf("%+v", res) assert.Equal(t, "", res.PostTitle) + b.TitleExtractor.cache.Purge() + atomic.StoreInt32(&titleEnable, 1) c, err := b.SetTitle(store.Locator{URL: tss.URL + "/post1", SiteID: "radio-t"}, id) require.NoError(t, err)