Comments (2)
So I didn't realize this, but the redis interface has both get
and getOption
methods. So technically you can already do it either way with redis.
Personally I feel like the way the memcached client does it makes sense for redis (having get
return an option and just get rid of getOption
), but not for http, where "get" is not really key/value get.
This does bring up a bigger issue of how clients handle responses in a way that's consistent across protocols. In particular, "should protocol errors be encoded as exceptions in failed Futures/Callbacks?" . And a followup question is given a protocol, what kinds of responses are considered errors?
For question 1, I think it depends. For example, I definitely think a memcached get
miss should be returned as a None
option, not as something like NoDataException
, but maybe a 404 for a http get should be a NotFoundException
?
For question 2, again I think there's no simple answer, but I do believe we can try to categorize every type of error across protocols:
- Failures in which the client should retry (probably on a different host): connection errors, remote server errors, rate-limiting
- Failures in which retrying the request will probably not change the outcome
a. malformed request
b. authentication / authorization problem - Failures which indicate attempting to read non-existant data
- Any other response explicitly marked as an error message (memcached and redis have this, not http)
- Others?
Once we've properly categorized responses, then we can determine which ones should become exceptions, and maybe decide if we can have some common exceptions shared across protocols.
from colossus.
I think for the particular example I raised, updating the Redis client so get
returns an option would make me happy. I'll work on that first.
I'm going to punt on the extra questions as I don't think there is a simple answer :)
from colossus.
Related Issues (20)
- Adding functionality to specify which IP address will be bind to when starting the server. HOT 1
- 100-continue is not supported HOT 2
- Document how to test metrics
- Logged error messages doesn't include the type of the errors (version 0.10) HOT 1
- Run scalafmt on colossus
- Colossus doesn't check existence of Host header HOT 4
- Benchmark latest colossus vs techempower version HOT 2
- Revisit how we handle http headers HOT 4
- maxResponseSize in Future Clients effectively limited to 10 MB by bytes Parser HOT 1
- Update of TechEmpower web framework benchmark for latest Colossus version HOT 7
- Http Header DateFormat Locale HOT 1
- Remove nscala-time HOT 1
- Update Load Balancer clients
- Obligatory example on page HOT 4
- Pull #672 request needs to be reviewed HOT 3
- Ask scala-steward to help you keeping library dependencies and sbt plugins up-to-date
- Inactivity HOT 3
- Release for 2.13.0 wanted HOT 1
- HttpServer can not work when the ActorSystem name contains underscore
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 colossus.