Comments (2)
Yes, the ConsulClient
class is threadsafe and should be shared across all threads in an application. It is more efficient to create one and share it because a single TCP connection can be held open for all requests on that ConsulClient
- internally it's constructing an HttpClient
for every ConsulClient
so setup and teardown costs of that class apply as well.
There would be a data race issue (which is being fixed in 0.7.0 with new semantics around construction of the client) if you modify any properties of the client or its underlying HttpClient
while using the Client in another thread, but if you do share it across threads and run into any sort of error or race condition due to multithreading other than the previously stated caveat, it is a bug and should be reported. The Lock and Semaphore classes are also threadsafe as you might expect, but the other types (e.g. KVPair
) that are simply data container classes are not threadsafe.
Please let me know if you have any further questions and I'll be happy to re-open this to address those as well.
from consuldotnet.
We faced an issue with k/v monitoring API and one ConsulClient instance for all threads.
Scenario: we have a class that provides configuration parameters for application stored in consul k/v. When we create an instance of this class, all values are get from k/v store. After each value fetched, we start its value monitoring by this code:
var queryOprions = new QueryOptions
{
WaitIndex = lastModifyIndex,
WaitTime = TimeSpan.FromMinutes(10)
};
monitoringGet = await consulClient
.KV
.Get(valueKeyPath, queryOprions, ct);
So each monitoring call blocks any another calls.
from consuldotnet.
Related Issues (20)
- Consul.ConsulRequestException: Unexpected response, status code InternalServerError: rpc error making call: EOF HOT 4
- No way to read ServiceMeta
- ConsulConfigurationException throw if URL scheme specified in CONSUL_HTTP_ADDR environment variable. HOT 1
- Latest version is not available in Nuget HOT 2
- Add Meta dictionary to AgentService and AgentServiceRegistration HOT 1
- Does not work on netcoreapp2.1 HOT 5
- Enable HttpClientHandler pooling? HOT 2
- KV Txn call may deadlock HOT 3
- Grpc heartbeat HOT 2
- Support for Consul Connect? HOT 1
- 0.9 Port Status
- No .Net Framework 4.0 compatibility HOT 1
- Filter Service and Health by multi tags
- I hope to support the heartbeat of grpc
- Agent.ServiceRegister hangs after KV.Get with new QueryOptions {WaitIndex = index}
- Aquire Lock custom KV value
- Service status
- Bad request : Invalid wait time and multiple Get request while trying to acquire leader HOT 2
- Cluster support
- Add consul.dll.xml into the NuGet package
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 consuldotnet.