From 9504ce3ae56e14097b7265ab24dd6c9eabd55bbc Mon Sep 17 00:00:00 2001 From: Yimin Chen Date: Thu, 6 Feb 2025 18:45:07 -0800 Subject: [PATCH 1/3] Specify pagesize for workflow list command --- temporalcli/commands.gen.go | 9 +++++---- temporalcli/commands.workflow_view.go | 10 +++++++--- temporalcli/commands.workflow_view_test.go | 2 ++ temporalcli/commandsgen/commands.yml | 3 +++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/temporalcli/commands.gen.go b/temporalcli/commands.gen.go index e45623357..4579d87dc 100644 --- a/temporalcli/commands.gen.go +++ b/temporalcli/commands.gen.go @@ -3,15 +3,14 @@ package temporalcli import ( + "os" + "time" + "github.com/mattn/go-isatty" "github.com/spf13/cobra" "github.com/spf13/pflag" - - "os" - - "time" ) var hasHighlighting = isatty.IsTerminal(os.Stdout.Fd()) @@ -2896,6 +2895,7 @@ type TemporalWorkflowListCommand struct { Query string Archived bool Limit int + Pagesize int } func NewTemporalWorkflowListCommand(cctx *CommandContext, parent *TemporalWorkflowCommand) *TemporalWorkflowListCommand { @@ -2913,6 +2913,7 @@ func NewTemporalWorkflowListCommand(cctx *CommandContext, parent *TemporalWorkfl s.Command.Flags().StringVarP(&s.Query, "query", "q", "", "Content for an SQL-like `QUERY` List Filter.") s.Command.Flags().BoolVar(&s.Archived, "archived", false, "Limit output to archived Workflow Executions.") s.Command.Flags().IntVar(&s.Limit, "limit", 0, "Maximum number of Workflow Executions to display.") + s.Command.Flags().IntVar(&s.Pagesize, "pagesize", 0, "Maximum number of Workflow Executions to return from server per request. Used for pagination.") s.Command.Run = func(c *cobra.Command, args []string) { if err := s.run(cctx, args); err != nil { cctx.Options.Fail(err) diff --git a/temporalcli/commands.workflow_view.go b/temporalcli/commands.workflow_view.go index 0552dd952..7f73d5746 100644 --- a/temporalcli/commands.workflow_view.go +++ b/temporalcli/commands.workflow_view.go @@ -306,9 +306,7 @@ func (c *TemporalWorkflowListCommand) run(cctx *CommandContext, _ []string) erro cctx.Printer.StartList() defer cctx.Printer.EndList() - // Build request and start looping. We always use default page size regardless - // of user-defined limit, because we're ok w/ extra page data and the default - // is not clearly defined. + // Build request and start looping. pageFetcher := c.pageFetcher(cctx, cl) var nextPageToken []byte var execsProcessed int @@ -360,16 +358,22 @@ func (c *TemporalWorkflowListCommand) pageFetcher( cctx *CommandContext, cl client.Client, ) func(next []byte) (workflowPage, error) { + + if c.Limit > 0 && c.Limit < c.Pagesize { + c.Pagesize = c.Limit + } return func(next []byte) (workflowPage, error) { if c.Archived { return cl.ListArchivedWorkflow(cctx, &workflowservice.ListArchivedWorkflowExecutionsRequest{ Query: c.Query, NextPageToken: next, + PageSize: int32(c.Pagesize), }) } return cl.ListWorkflow(cctx, &workflowservice.ListWorkflowExecutionsRequest{ Query: c.Query, NextPageToken: next, + PageSize: int32(c.Pagesize), }) } } diff --git a/temporalcli/commands.workflow_view_test.go b/temporalcli/commands.workflow_view_test.go index 3f5894497..f8b948171 100644 --- a/temporalcli/commands.workflow_view_test.go +++ b/temporalcli/commands.workflow_view_test.go @@ -442,10 +442,12 @@ func (s *SharedServerSuite) TestWorkflow_List() { "workflow", "list", "--address", s.Address(), "--query", fmt.Sprintf(`TaskQueue="%s"`, s.Worker().Options.TaskQueue), + "--pagesize", "1", ) s.NoError(res.Err) out := res.Stdout.String() s.ContainsOnSameLine(out, "Completed", "DevWorkflow") + s.Equal(3, strings.Count(out, "DevWorkflow")) // JSON res = s.Execute( diff --git a/temporalcli/commandsgen/commands.yml b/temporalcli/commandsgen/commands.yml index 3df25670b..63648d2d4 100644 --- a/temporalcli/commandsgen/commands.yml +++ b/temporalcli/commandsgen/commands.yml @@ -2886,6 +2886,9 @@ commands: - name: limit type: int description: Maximum number of Workflow Executions to display. + - name: pagesize + type: int + description: Maximum number of Workflow Executions to return from server per request. Used for pagination. - name: temporal workflow metadata summary: Query the Workflow for user-specified metadata From 0ad5b877208747e61c1ca23cba34fecb389c80a5 Mon Sep 17 00:00:00 2001 From: Yimin Chen Date: Thu, 6 Feb 2025 19:18:08 -0800 Subject: [PATCH 2/3] reorder imports --- temporalcli/commands.gen.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/temporalcli/commands.gen.go b/temporalcli/commands.gen.go index 4579d87dc..b3afe3eee 100644 --- a/temporalcli/commands.gen.go +++ b/temporalcli/commands.gen.go @@ -3,14 +3,15 @@ package temporalcli import ( - "os" - "time" - "github.com/mattn/go-isatty" "github.com/spf13/cobra" "github.com/spf13/pflag" + + "os" + + "time" ) var hasHighlighting = isatty.IsTerminal(os.Stdout.Fd()) From b473b4379802a2954aef40ae19b1f9a04d7222fc Mon Sep 17 00:00:00 2001 From: Yimin Chen Date: Fri, 7 Feb 2025 23:39:48 -0800 Subject: [PATCH 3/3] address comments --- temporalcli/commands.gen.go | 4 ++-- temporalcli/commands.workflow_view.go | 8 ++++---- temporalcli/commands.workflow_view_test.go | 2 +- temporalcli/commandsgen/commands.yml | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/temporalcli/commands.gen.go b/temporalcli/commands.gen.go index b3afe3eee..fac5a8f65 100644 --- a/temporalcli/commands.gen.go +++ b/temporalcli/commands.gen.go @@ -2896,7 +2896,7 @@ type TemporalWorkflowListCommand struct { Query string Archived bool Limit int - Pagesize int + PageSize int } func NewTemporalWorkflowListCommand(cctx *CommandContext, parent *TemporalWorkflowCommand) *TemporalWorkflowListCommand { @@ -2914,7 +2914,7 @@ func NewTemporalWorkflowListCommand(cctx *CommandContext, parent *TemporalWorkfl s.Command.Flags().StringVarP(&s.Query, "query", "q", "", "Content for an SQL-like `QUERY` List Filter.") s.Command.Flags().BoolVar(&s.Archived, "archived", false, "Limit output to archived Workflow Executions.") s.Command.Flags().IntVar(&s.Limit, "limit", 0, "Maximum number of Workflow Executions to display.") - s.Command.Flags().IntVar(&s.Pagesize, "pagesize", 0, "Maximum number of Workflow Executions to return from server per request. Used for pagination.") + s.Command.Flags().IntVar(&s.PageSize, "page-size", 0, "Maximum number of Workflow Executions to fetch at a time from the server.") s.Command.Run = func(c *cobra.Command, args []string) { if err := s.run(cctx, args); err != nil { cctx.Options.Fail(err) diff --git a/temporalcli/commands.workflow_view.go b/temporalcli/commands.workflow_view.go index 7f73d5746..c57e2d258 100644 --- a/temporalcli/commands.workflow_view.go +++ b/temporalcli/commands.workflow_view.go @@ -359,21 +359,21 @@ func (c *TemporalWorkflowListCommand) pageFetcher( cl client.Client, ) func(next []byte) (workflowPage, error) { - if c.Limit > 0 && c.Limit < c.Pagesize { - c.Pagesize = c.Limit + if c.Limit > 0 && c.Limit < c.PageSize { + c.PageSize = c.Limit } return func(next []byte) (workflowPage, error) { if c.Archived { return cl.ListArchivedWorkflow(cctx, &workflowservice.ListArchivedWorkflowExecutionsRequest{ Query: c.Query, NextPageToken: next, - PageSize: int32(c.Pagesize), + PageSize: int32(c.PageSize), }) } return cl.ListWorkflow(cctx, &workflowservice.ListWorkflowExecutionsRequest{ Query: c.Query, NextPageToken: next, - PageSize: int32(c.Pagesize), + PageSize: int32(c.PageSize), }) } } diff --git a/temporalcli/commands.workflow_view_test.go b/temporalcli/commands.workflow_view_test.go index f8b948171..a39e6512f 100644 --- a/temporalcli/commands.workflow_view_test.go +++ b/temporalcli/commands.workflow_view_test.go @@ -442,7 +442,7 @@ func (s *SharedServerSuite) TestWorkflow_List() { "workflow", "list", "--address", s.Address(), "--query", fmt.Sprintf(`TaskQueue="%s"`, s.Worker().Options.TaskQueue), - "--pagesize", "1", + "--page-size", "1", ) s.NoError(res.Err) out := res.Stdout.String() diff --git a/temporalcli/commandsgen/commands.yml b/temporalcli/commandsgen/commands.yml index 63648d2d4..9d20461c7 100644 --- a/temporalcli/commandsgen/commands.yml +++ b/temporalcli/commandsgen/commands.yml @@ -2886,9 +2886,9 @@ commands: - name: limit type: int description: Maximum number of Workflow Executions to display. - - name: pagesize + - name: page-size type: int - description: Maximum number of Workflow Executions to return from server per request. Used for pagination. + description: Maximum number of Workflow Executions to fetch at a time from the server. - name: temporal workflow metadata summary: Query the Workflow for user-specified metadata