uohzoaix / spymemcached

Automatically exported from code.google.com/p/spymemcached
0 stars 0 forks source link

Check set size before sending. #37

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Verify an object is of reasonable size (<1MB) before sending.

This will help with a few types of errors that have sprung up in normal use.

Original issue reported on code.google.com by dsalli...@gmail.com on 1 Oct 2008 at 10:48

GoogleCodeExporter commented 9 years ago
Would it make sense to detect this in the calling thread and if the object is 
too large not even bother the IO 
thread? Since the encoding is done by the caller this should be straight 
forward.

An open question is what to do if the object is too large. A few options I can 
think of:

  o throw an exception immediately
  o throw an exception in Future.get wrapped in a ExecutionException
  o have Future.get return false

In my code I usually do not wait for a store operation, thus only the first 
option would allow me to detect this 
case. Throwing an exception in a production environment does not seem like a 
good idea, however, so 
perhaps it makes sense to have one of the latter options be the default, but 
allow the first option to be 
enabled via a flag?

The disadvantage of returning false is that no reason for the failure can be 
given, while an exception allows 
this to be communicated. Since ExecutionException is checked it might make 
sense to use it in this case (the 
client has to handle it anyway).

Original comment by kreide@gmail.com on 2 Oct 2008 at 5:48

GoogleCodeExporter commented 9 years ago

Original comment by dsalli...@gmail.com on 2 Oct 2008 at 7:03

GoogleCodeExporter commented 9 years ago
I ended up with #1.  An IllegalArgumentException will be thrown on any
set/add/replace/cas/whatever at the time of encoding.  You can increase the 
size in
the client (I needed this functionality to maintain coverage in the tests 
anyway).

Original comment by dsalli...@gmail.com on 3 Oct 2008 at 3:40