Comments (3)
I couldn't reliably build graceful shutdowns of the connection using the WaitForStateChange
API, so ended up using a sync.WaitGroup
to track in-flight requests instead.
The changes are in my PR #28.
from gubernator.
This would be great! As you mentioned, we are not seeing this in our prod environments because our peer sets are pretty stable. The hard part of this would be knowing when all in flight requests to a peer have completed. It's possible that we could just assume the peer is no longer fielding requests because it's been removed from the peer set. Thoughts?
from gubernator.
It appears the there's an experimental API to wait for a given GRPC connection to enter a state, which could be used to build graceful shutdowns (https://godoc.org/google.golang.org/grpc#ClientConn.WaitForStateChange). A shutdown process that accounts for this may be as follows:
- Close the request queue
- Send the pending batch
- Wait for connection state to be idle
- Close the connection
I'll investigate whether this approach is viable.
from gubernator.
Related Issues (20)
- gubernator SSL client auth not working as expected HOT 7
- Helm chart is broken HOT 5
- Cannot upgrade gubernator? HOT 1
- Most recent Docker image was compiled using an outdated Go release HOT 1
- ARM Architecture HOT 2
- negative hits is not processed when remaining equals 0 HOT 1
- Token bucket cache item expiry is not getting updated with DURATION_IS_GREGORIAN HOT 1
- Using Gubernator as a library HOT 1
- Scheduling over-limit requests HOT 17
- Question: Difference between name and unique_key HOT 4
- Update and publish Python files HOT 1
- Standard GRPC health check endpoint HOT 1
- CacheSize in the config is ignored HOT 1
- Helm repository https://mailgun.github.io/gubernator shows no entries HOT 1
- Please upgrade go.opentelemetry.io/* dependencies HOT 2
- Peer list update bug in K8s cluster HOT 3
- Adding rate_limit_name as tag on metrics HOT 5
- Bug: Latest Image doesn't work with docker-compose HOT 2
- Tests should verify Docker build
- Run benchmarks!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gubernator.