Thanks Sergii, for the response. This clarifies my doubt. Best regards, Darshan
On Thursday, March 21, 2024 at 5:41:39 AM UTC+5:30 Sergii Tkachenko wrote: > Ok, I might've went a bit to much into the weeds of HTTP streams with my > answer. > > > 1. when the program calls streamClientSender1.onNext(request), request > will be sent in a stream, if I call it again will it be in the same stream > as long as the age of the stream is within max connection age ? > First, to clarify - the stream is not created whenever onNext is called. > It's created on the first stub.sendRequest call. The stream will persist > until the RPC is complete. > > > 2. does streamClientSender1.onNext() and streamClientSender2.onNext() > use different streams to send request, since they are two different > streamObserver objects. > Yes, two different streams - just with the same correction that > stub.sendRequest is what initiates a stream. > Messages is sent in order and tied to a stream. > > > 3. Is there a way to get StreamID of streams created and print it as a > verification step so that the above two questions can be answered ? > Not really, stream ids are kept internal. If it's just something you're > curious about, you can always use the debugger. But you shouldn't do > anything stream-id-related in the code, see > https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#stream-identification > : > > All GRPC calls need to specify an internal ID. We will use HTTP2 > stream-ids as call identifiers in this scheme. NOTE: These ids are > contextual to an open HTTP2 session and will not be unique within a given > process that is handling more than one HTTP2 session nor can they be used > as GUIDs. > > Sergii > > On Tuesday, March 19, 2024 at 11:07:38 PM UTC-7 Sergii Tkachenko wrote: > >> Hey Darshan, >> >> Right now I'm not entirely sure I'll be able to answer your question with >> absolute confidence. >> I'd like to say "yes, stream is created on first headers sent, and stream >> id not going to change until RPC dies", but there might be some nuances >> depending on the transport used, f.e. Netty's StreamBufferingEncoder. >> I'll speak with my TL to clarify this. >> I don't think there's a clear way to get the stream ID, except I've >> noticed it's tracked via PerfMark <https://github.com/perfmark/perfmark> >> when it's enabled: >> >> https://github.com/grpc/grpc-java/blob/68eb639b1cd38c161a3113bd50e731c04ac51fef/core/src/main/java/io/grpc/internal/ServerImpl.java#L464-L465 >> >> <https://github.com/grpc/grpc-java/blob/68eb639b1cd38c161a3113bd50e731c04ac51fef/core/src/main/java/io/grpc/internal/ServerImpl.java#L464-L465> >> >> I'll follow up on your questions, but could you please clarify: >> >> 1. Your code snippet: are you talking about the client side, or the >> server side? >> 2. Is there anything specific you're trying to achieve? >> >> Best Regards, >> Sergii >> >> On Monday, March 11, 2024 at 8:48:38 AM UTC-7 Darshan J Gowda wrote: >> >>> Hi everyone, >>> I'm trying to understand how many streams are getting created in one >>> grpc connection (Bidirectional streaming) whenever I call onNext() using a >>> StreamObserver object. Below is my code context >>> >>> StreamObserver<Response> responseStreamObserver1 = >>> getResponseObserver(); >>> StreamObserver<Response> responseStreamObserver2 = getResponseObserver(); >>> StreamObserver<Request> streamClientSender1 = >>> stub.sendRequest(responseStreamObserver1); >>> StreamObserver<Mbus> streamClientSender2 = >>> stub.sendRequest(responseStreamObserver2); >>> >>> My question is, >>> 1. when the program calls streamClientSender1.onNext(request), request >>> will be sent in a stream, if I call it again will it be in the same stream >>> as long as the age of the stream is within max connection age ? >>> 2. does streamClientSender1.onNext() and streamClientSender2.onNext() >>> use different streams to send request, since they are two different >>> streamObserver objects. >>> 3. Is there a way to get StreamID of streams created and print it as a >>> verification step so that the above two questions can be answered ? >>> >>> Thanks and regards, >>> Darshan >>> >> -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/ddbb14dd-c44b-4920-8263-c9c75449f39en%40googlegroups.com.