Too many updates for a View

It seems that views accept 400 updates per 10 seconds? Is this something that can be configured? If not, what workaround would you suggest?

20:43:55.579 WARN  a.s.s.RestartWithBackoffSource - Restarting stream due to failure [1]: kalix.runtime.views.Updater$ProcessFailure: Unexpected error passing update for table [X], subject-id [ef5b9244-aa56-3bd0-a029-3d1293a7fdc5] to transformation function [OnXSaved]
kalix-kalix-runtime-1: kalix.runtime.views.Updater$ProcessFailure: Unexpected error passing update for table [x], subject-id [ef5b9244-aa56-3bd0-a029-3d1293a7fdc5] to transformation function [OnXSaved]
kalix-kalix-runtime-1: 	at kalix.runtime.views.Updater$$anonfun$passThroughUserFunction$2.applyOrElse(Updater.scala:500)
kalix-kalix-runtime-1: 	at kalix.runtime.views.Updater$$anonfun$passThroughUserFunction$2.applyOrElse(Updater.scala:497)
kalix-kalix-runtime-1: 	at scala.util.Failure.recover(Try.scala:242)
kalix-kalix-runtime-1: 	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:487)
kalix-kalix-runtime-1: 	at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:64)
kalix-kalix-runtime-1: 	at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:101)
kalix-kalix-runtime-1: 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
kalix-kalix-runtime-1: 	at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)
kalix-kalix-runtime-1: 	at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:101)
kalix-kalix-runtime-1: 	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:49)
kalix-kalix-runtime-1: 	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:48)
kalix-kalix-runtime-1: 	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
kalix-kalix-runtime-1: 	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
kalix-kalix-runtime-1: 	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
kalix-kalix-runtime-1: 	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
kalix-kalix-runtime-1: 	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
kalix-kalix-runtime-1: Caused by: akka.grpc.GrpcServiceException: RESOURCE_EXHAUSTED: Abrupt GOAWAY closed sent stream. HTTP/2 error code: ENHANCE_YOUR_CALM (Bandwidth exhausted), debug data: Too many RST frames per second for this connection. (Configured limit 400/10 seconds)
kalix-kalix-runtime-1: 	at akka.grpc.GrpcServiceException$.apply(GrpcServiceException.scala:40)
kalix-kalix-runtime-1: 	at akka.grpc.internal.RequestBuilderImpl$.lift(RequestBuilderImpl.scala:481)
kalix-kalix-runtime-1: 	at akka.grpc.internal.RequestBuilderImpl$$anonfun$richErrorStream$1.applyOrElse(RequestBuilderImpl.scala:473)
kalix-kalix-runtime-1: 	at akka.grpc.internal.RequestBuilderImpl$$anonfun$richErrorStream$1.applyOrElse(RequestBuilderImpl.scala:472)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.RecoverWith$$anon$43.akka$stream$impl$fusing$RecoverWith$$anon$$onFailure(Ops.scala:2156)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.RecoverWith$$anon$43.onUpstreamFailure(Ops.scala:2151)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:540)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:403)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:650)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:521)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:625)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:800)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$shortCircuitBatch(ActorGraphInterpreter.scala:787)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:819)
kalix-kalix-runtime-1: 	at akka.actor.Actor.aroundReceive(Actor.scala:542)
kalix-kalix-runtime-1: 	at akka.actor.Actor.aroundReceive$(Actor.scala:540)
kalix-kalix-runtime-1: 	at akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:716)
kalix-kalix-runtime-1: 	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:577)
kalix-kalix-runtime-1: 	at akka.actor.ActorCell.invoke(ActorCell.scala:545)
kalix-kalix-runtime-1: 	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270)
kalix-kalix-runtime-1: 	at akka.dispatch.Mailbox.run(Mailbox.scala:231)
kalix-kalix-runtime-1: 	at akka.dispatch.Mailbox.exec(Mailbox.scala:243)
kalix-kalix-runtime-1: 	... 5 more

Hello,

Seems like there’s something to improve on the runtime side. I’m raising an internal ticket for us.

In the meantime, you should be able to increase that limit by setting akka.http.server.http2.max-resets on your user function to a value higher than 400. Let me know if that works out as expected.

It does work, thank you