Fix data race in subscription countUnverified
38f3385 parent: 422e1d0 modified
internal/server/dashboard_handler.go +12 -16 | @@ -76,26 +76,22 @@ func (s *Server) handleDashboard(w http.ResponseWriter, r *http.Request) { | ||
| 76 | 76 | return err |
| 77 | 77 | }) |
| 78 | 78 | |
| 79 | - if subCount == 0 { | |
| 80 | - g.Go(func() error { | |
| 81 | - var err error | |
| 82 | - globalTrending, err = s.engine.GetGlobalTrending(gCtx, user.DID, 5, 0) | |
| 83 | - return err | |
| 84 | - }) | |
| 85 | - } else { | |
| 86 | - g.Go(func() error { | |
| 87 | - var err error | |
| 88 | - personalTrending, err = s.engine.GetPersonalTrending(gCtx, user.DID, userLangs, 5, 0) | |
| 89 | - return err | |
| 90 | - }) | |
| 91 | - } | |
| 92 | - | |
| 93 | 79 | if err := g.Wait(); err != nil { |
| 94 | 80 | s.logger.Warn("dashboard error", "error", err, "did", user.DID) |
| 95 | 81 | } |
| 96 | 82 | |
| 97 | - if subCount > 0 { | |
| 98 | - var err error | |
| 83 | + var err error | |
| 84 | + if subCount == 0 { | |
| 85 | + globalTrending, err = s.engine.GetGlobalTrending(gCtx, user.DID, 5, 0) | |
| 86 | + if err != nil { | |
| 87 | + s.logger.Warn("failed to get global trending", "error", err, "did", user.DID) | |
| 88 | + } | |
| 89 | + } else { | |
| 90 | + personalTrending, err = s.engine.GetPersonalTrending(gCtx, user.DID, userLangs, 5, 0) | |
| 91 | + if err != nil { | |
| 92 | + s.logger.Warn("failed to get personal trending", "error", err, "did", user.DID) | |
| 93 | + } | |
| 94 | + | |
| 99 | 95 | articleRecs, err = s.engine.GetArticleRecommendations(ctx, user.DID, userLangs, 5) |
| 100 | 96 | if err != nil { |
| 101 | 97 | s.logger.Warn("failed to get article recommendations", "error", err, "did", user.DID) |
| @@ -76,26 +76,22 @@ func (s *Server) handleDashboard(w http.ResponseWriter, r *http.Request) { | |||
| 76 | return err | 76 | return err |
| 77 | }) | 77 | }) |
| 78 | 78 | ||
| 79 | - if subCount == 0 { | ||
| 80 | - g.Go(func() error { | ||
| 81 | - var err error | ||
| 82 | - globalTrending, err = s.engine.GetGlobalTrending(gCtx, user.DID, 5, 0) | ||
| 83 | - return err | ||
| 84 | - }) | ||
| 85 | - } else { | ||
| 86 | - g.Go(func() error { | ||
| 87 | - var err error | ||
| 88 | - personalTrending, err = s.engine.GetPersonalTrending(gCtx, user.DID, userLangs, 5, 0) | ||
| 89 | - return err | ||
| 90 | - }) | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | if err := g.Wait(); err != nil { | 79 | if err := g.Wait(); err != nil { |
| 94 | s.logger.Warn("dashboard error", "error", err, "did", user.DID) | 80 | s.logger.Warn("dashboard error", "error", err, "did", user.DID) |
| 95 | } | 81 | } |
| 96 | 82 | ||
| 97 | - if subCount > 0 { | 83 | + var err error |
| 98 | - var err error | 84 | + if subCount == 0 { |
| 85 | + globalTrending, err = s.engine.GetGlobalTrending(gCtx, user.DID, 5, 0) | ||
| 86 | + if err != nil { | ||
| 87 | + s.logger.Warn("failed to get global trending", "error", err, "did", user.DID) | ||
| 88 | + } | ||
| 89 | + } else { | ||
| 90 | + personalTrending, err = s.engine.GetPersonalTrending(gCtx, user.DID, userLangs, 5, 0) | ||
| 91 | + if err != nil { | ||
| 92 | + s.logger.Warn("failed to get personal trending", "error", err, "did", user.DID) | ||
| 93 | + } | ||
| 94 | + | ||
| 99 | articleRecs, err = s.engine.GetArticleRecommendations(ctx, user.DID, userLangs, 5) | 95 | articleRecs, err = s.engine.GetArticleRecommendations(ctx, user.DID, userLangs, 5) |
| 100 | if err != nil { | 96 | if err != nil { |
| 101 | s.logger.Warn("failed to get article recommendations", "error", err, "did", user.DID) | 97 | s.logger.Warn("failed to get article recommendations", "error", err, "did", user.DID) |