Skip to content

Commit e664cad

Browse files
authored
Create pubsub channels with correct unique-per-channel id (#2798)
This bug only becomes apparent with gRPC >=1.15.0 when the sub-channel sharing code changed.
1 parent f698b71 commit e664cad

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

‎apis/Google.Cloud.PubSub.V1/Google.Cloud.PubSub.V1/PublisherClient.cs

+8-9
Original file line numberDiff line numberDiff line change
@@ -197,17 +197,16 @@ public static async Task<PublisherClient> CreateAsync(TopicName topicName, Clien
197197
var endpoint = clientCreationSettings?.ServiceEndpoint ?? PublisherServiceApiClient.DefaultEndpoint;
198198
var clients = new PublisherServiceApiClient[clientCount];
199199
var shutdowns = new Func<Task>[clientCount];
200-
// Set channel send/recv message size to unlimited. It defaults to ~4Mb which causes failures.
201-
var channelOptions = new[]
202-
{
203-
new ChannelOption(ChannelOptions.MaxSendMessageLength, -1),
204-
new ChannelOption(ChannelOptions.MaxReceiveMessageLength, -1),
205-
206-
// Use a random arg to prevent sub-channel re-use in gRPC, so each channel uses its own connection.
207-
new ChannelOption("sub-channel-separator", Guid.NewGuid().ToString())
208-
};
209200
for (int i = 0; i < clientCount; i++)
210201
{
202+
var channelOptions = new[]
203+
{
204+
// Set channel send/recv message size to unlimited. It defaults to ~4Mb which causes failures.
205+
new ChannelOption(ChannelOptions.MaxSendMessageLength, -1),
206+
new ChannelOption(ChannelOptions.MaxReceiveMessageLength, -1),
207+
// Use a random arg to prevent sub-channel re-use in gRPC, so each channel uses its own connection.
208+
new ChannelOption("sub-channel-separator", Guid.NewGuid().ToString())
209+
};
211210
var channel = new Channel(endpoint.Host, endpoint.Port, channelCredentials, channelOptions);
212211
clients[i] = PublisherServiceApiClient.Create(channel, clientCreationSettings?.PublisherServiceApiSettings);
213212
shutdowns[i] = channel.ShutdownAsync;

‎apis/Google.Cloud.PubSub.V1/Google.Cloud.PubSub.V1/SubscriberClient.cs

+8-9
Original file line numberDiff line numberDiff line change
@@ -244,17 +244,16 @@ public static async Task<SubscriberClient> CreateAsync(SubscriptionName subscrip
244244
var endpoint = clientCreationSettings?.ServiceEndpoint ?? SubscriberServiceApiClient.DefaultEndpoint;
245245
var clients = new SubscriberServiceApiClient[clientCount];
246246
var shutdowns = new Func<Task>[clientCount];
247-
// Set channel send/recv message size to unlimited. It defaults to ~4Mb which causes failures.
248-
var channelOptions = new[]
249-
{
250-
new ChannelOption(ChannelOptions.MaxSendMessageLength, -1),
251-
new ChannelOption(ChannelOptions.MaxReceiveMessageLength, -1),
252-
253-
// Use a random arg to prevent sub-channel re-use in gRPC, so each channel uses its own connection.
254-
new ChannelOption("sub-channel-separator", Guid.NewGuid().ToString())
255-
};
256247
for (int i = 0; i < clientCount; i++)
257248
{
249+
var channelOptions = new[]
250+
{
251+
// Set channel send/recv message size to unlimited. It defaults to ~4Mb which causes failures.
252+
new ChannelOption(ChannelOptions.MaxSendMessageLength, -1),
253+
new ChannelOption(ChannelOptions.MaxReceiveMessageLength, -1),
254+
// Use a random arg to prevent sub-channel re-use in gRPC, so each channel uses its own connection.
255+
new ChannelOption("sub-channel-separator", Guid.NewGuid().ToString())
256+
};
258257
var channel = new Channel(endpoint.Host, endpoint.Port, channelCredentials, channelOptions);
259258
clients[i] = SubscriberServiceApiClient.Create(channel, clientCreationSettings?.SubscriberServiceApiSettings);
260259
shutdowns[i] = channel.ShutdownAsync;

0 commit comments

Comments
 (0)
X