Skip to content

Pub/Sub - "onStreamAllocated was not called" error under load #2042

@saturnism

Description

@saturnism

Making continuous calls in a while(true) loop:

while (true) {
  String payload = String.valueOf(System.currentTimeMillis());         
  publisher.publish(PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8(payload)).build());

Cases errors:

420)
	at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:95)
	at io.netty.channel.DefaultChannelPromise.setSuccess(DefaultChannelPromise.java:76)
	at io.netty.channel.DefaultChannelPromise.setSuccess(DefaultChannelPromise.java:71)
	at io.netty.handler.codec.http2.StreamBufferingEncoder$Frame.release(StreamBufferingEncoder.java:309)
	at io.netty.handler.codec.http2.StreamBufferingEncoder$DataFrame.release(StreamBufferingEncoder.java:357)
	at io.netty.handler.codec.http2.StreamBufferingEncoder$PendingStream.close(StreamBufferingEncoder.java:292)
	at io.netty.handler.codec.http2.StreamBufferingEncoder.writeRstStream(StreamBufferingEncoder.java:184)
	at io.grpc.netty.NettyClientHandler.cancelStream(NettyClientHandler.java:460)
	at io.grpc.netty.NettyClientHandler.write(NettyClientHandler.java:234)
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:739)
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:731)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:817)
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:724)
	at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1022)
	at io.netty.channel.AbstractChannel.write(AbstractChannel.java:291)
	at io.grpc.netty.WriteQueue.flush(WriteQueue.java:127)
	at io.grpc.netty.WriteQueue.access$000(WriteQueue.java:47)
	at io.grpc.netty.WriteQueue$1.run(WriteQueue.java:59)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:445)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
	at java.lang.Thread.run(Thread.java:745)

When putting a slightest delay in the repeated call, the error goes away, e.g.

while (true) {
  String payload = String.valueOf(System.currentTimeMillis());         
  publisher.publish(PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8(payload)).build());
  System.out.println(payload);
  // or Thread.sleep(100L)

Metadata

Metadata

Labels

api: pubsubIssues related to the Pub/Sub API.priority: p2Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions