@@ -163,7 +163,7 @@ func (g *GoChannel) sendMessage(topic string, message *message.Message) (<-chan
163
163
164
164
wg .Add (1 )
165
165
go func () {
166
- subscriber .sendMessageToSubscriber (message , logFields , g . config . PreserveContext )
166
+ subscriber .sendMessageToSubscriber (message , logFields )
167
167
wg .Done ()
168
168
}()
169
169
}
@@ -196,11 +196,12 @@ func (g *GoChannel) Subscribe(ctx context.Context, topic string) (<-chan *messag
196
196
subLock .(* sync.Mutex ).Lock ()
197
197
198
198
s := & subscriber {
199
- ctx : ctx ,
200
- uuid : watermill .NewUUID (),
201
- outputChannel : make (chan * message.Message , g .config .OutputChannelBuffer ),
202
- logger : g .logger ,
203
- closing : make (chan struct {}),
199
+ ctx : ctx ,
200
+ uuid : watermill .NewUUID (),
201
+ outputChannel : make (chan * message.Message , g .config .OutputChannelBuffer ),
202
+ logger : g .logger ,
203
+ closing : make (chan struct {}),
204
+ preserveContext : g .config .PreserveContext ,
204
205
}
205
206
206
207
go func (s * subscriber , g * GoChannel ) {
@@ -246,7 +247,7 @@ func (g *GoChannel) Subscribe(ctx context.Context, topic string) (<-chan *messag
246
247
msg := g.persistedMessages [topic ][i ]
247
248
logFields := watermill.LogFields {"message_uuid" : msg .UUID , "topic" : topic }
248
249
249
- go s .sendMessageToSubscriber (msg , logFields , g . config . PreserveContext )
250
+ go s .sendMessageToSubscriber (msg , logFields )
250
251
}
251
252
}
252
253
@@ -329,6 +330,8 @@ type subscriber struct {
329
330
logger watermill.LoggerAdapter
330
331
closed bool
331
332
closing chan struct {}
333
+
334
+ preserveContext bool
332
335
}
333
336
334
337
func (s * subscriber ) Close () {
@@ -349,19 +352,20 @@ func (s *subscriber) Close() {
349
352
close (s .outputChannel )
350
353
}
351
354
352
- func (s * subscriber ) sendMessageToSubscriber (msg * message.Message , logFields watermill.LogFields , preserveContext bool ) {
355
+ func (s * subscriber ) sendMessageToSubscriber (msg * message.Message , logFields watermill.LogFields ) {
353
356
s .sending .Lock ()
354
357
defer s .sending .Unlock ()
355
358
356
359
var ctx context.Context
357
- var cancelCtx context.CancelFunc
358
360
359
- if preserveContext {
360
- ctx , cancelCtx = context .WithCancel (msg .Context ())
361
+ //This is getting the context from the message, not the subscriber
362
+ if s .preserveContext {
363
+ ctx = msg .Context ()
361
364
} else {
365
+ var cancelCtx context.CancelFunc
362
366
ctx , cancelCtx = context .WithCancel (s .ctx )
367
+ defer cancelCtx ()
363
368
}
364
- defer cancelCtx ()
365
369
366
370
SendToSubscriber:
367
371
for {
0 commit comments