Skip to content

[all] support contexts #1170

Open
Open
@jayshrivastava

Description

@jayshrivastava

Is your feature request related to a problem? Please describe.
The library does not take a context/context.

Describe the solution you'd like
I expect clients and producers to take a context argument upon creation and have all goroutines created by the clients and producers take a context as well. This is important for tracing (see https://medium.com/swlh/distributed-tracing-for-go-microservice-with-opentracing-1fc1aec76b3e). The context needs to be piped into all goroutines for observability.

It's also important to select on ctx.Done() when sending or recieving to channels. The libary does not do that at the moment. Ex.
What if the command chan is full and cp cannot be send? This method will block. It would be beneficial to also select on a context provided by the user of the library in case the caller wants to cancel long running blocked operations.

func (p *partitionProducer) Close() {
if p.getProducerState() != producerReady {
// Producer is closing
return
}
cp := &closeProducer{doneCh: make(chan struct{})}
p.cmdChan <- cp
// wait for close producer request to complete
<-cp.doneCh
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions