From 6052e6e5ffc39c2dcfda7534d7f213c85dc0ee29 Mon Sep 17 00:00:00 2001 From: Sophia Yang <171981480+yangyzs@users.noreply.github.com> Date: Fri, 14 Aug 2026 15:12:37 -0400 Subject: [PATCH] feat(internal/librarian/java): parallelize java library generation Parallelize Java client library generation using errgroup, running library generation concurrently with CPU-bound worker pool. Enable integration test in workflow for validation. TAG=agy --- .github/workflows/java.yaml | 2 +- internal/librarian/generate.go | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/java.yaml b/.github/workflows/java.yaml index 628b950cf7e..26cac0765ed 100644 --- a/.github/workflows/java.yaml +++ b/.github/workflows/java.yaml @@ -116,7 +116,7 @@ jobs: working-directory: google-cloud-java run: librarian generate secretmanager - name: Run librarian generate all (integration test) - if: matrix.task == 'integration' && github.event_name == 'push' && github.ref == 'refs/heads/main' + if: matrix.task == 'integration' working-directory: google-cloud-java run: librarian generate --all create-issue-on-failure: diff --git a/internal/librarian/generate.go b/internal/librarian/generate.go index 6f46df842dc..ca6f67231b2 100644 --- a/internal/librarian/generate.go +++ b/internal/librarian/generate.go @@ -241,10 +241,18 @@ func generateLibraries(ctx context.Context, cfg *config.Config, libraries []*con } return g.Wait() case config.LanguageJava: + g, gctx := errgroup.WithContext(ctx) + g.SetLimit(runtime.NumCPU()) for _, library := range libraries { - if err := java.Generate(ctx, cfg, library, src); err != nil { - return fmt.Errorf("generate library %q (%s): %w", library.Name, cfg.Language, err) - } + g.Go(func() error { + if err := java.Generate(gctx, cfg, library, src); err != nil { + return fmt.Errorf("generate library %q (%s): %w", library.Name, cfg.Language, err) + } + return nil + }) + } + if err := g.Wait(); err != nil { + return err } if err := java.Format(ctx, libraries...); err != nil { return fmt.Errorf("format java libraries (%s): %w", cfg.Language, err)