diff --git a/pkg/morph/client/client.go b/pkg/morph/client/client.go index 88f9703e7..2570bc2c9 100644 --- a/pkg/morph/client/client.go +++ b/pkg/morph/client/client.go @@ -260,8 +260,13 @@ func (c *Client) TestInvokeIterator(cb func(stackitem.Item) error, batchSize int _ = c.rpcActor.TerminateSession(sid) }() + // Batch size for TraverseIterator() can restricted on the server-side. + traverseBatchSize := batchSize + if invoker.DefaultIteratorResultItems < traverseBatchSize { + traverseBatchSize = invoker.DefaultIteratorResultItems + } for { - items, err := c.rpcActor.TraverseIterator(sid, &r, batchSize) + items, err := c.rpcActor.TraverseIterator(sid, &r, traverseBatchSize) if err != nil { return err } @@ -271,7 +276,7 @@ func (c *Client) TestInvokeIterator(cb func(stackitem.Item) error, batchSize int return err } } - if len(items) < batchSize { + if len(items) < traverseBatchSize { break } }