Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Support for incr/decr operations #1

Open
wants to merge 69 commits into from

1 participant

@jesse-lauro

Please consider merging this branch. Basically added support for incr/decr operations.

Joe Williams and others added some commits
Joe Williams added another merle project to the readme. 9e739f3
joewilliams gen_server2 upgrade 8742789
joewilliams Merge branch 'master' of github.com:joewilliams/merle 3294247
joewilliams added priority queue for gen_server2 9e60987
joewilliams s/get/getkey in t02 ab4bccc
joewilliams better disconnect procedure, thanks zabrane 1fc2c4f
joewilliams disconnect should be a cast not call 60b4251
Jeremy added incr/2, decr/2, addcounter/1, literal/1
incr/2 implements the increment command for memcached, decr implements
the decrement command.

addcounter/1 uses a simple (non-CAS) set to initialized a counter set
at zero, which can then be fiddled with via incr/2 and decr/2. This
was necessary because merle functions mainly as a key/value store for
arbitrary erlang data instead of a general data-store, such as we want
for cacti purposes.

literal/1 allows the user to submit literal strings over the socket to
memcached. This should be used with extreme caution as memcached is
intolerant of malformed input, but it is useful for determining what
strings sent to memcached should look like and checking assumptions
about its behavior.

TODO: (optional) need a Check-And-Set version of addcounter so that
distributed applications can update the same value with incr/2 and
decr/2. This would save client code from having to try changing a
value and then making a separate call to initialize it if it does not
exist.
d312572
Jeremy better addcounter/1, incr/2 and decr/2
All three of the above functions now return more erlang-ish results,
in keeping with the rest of merle. addcounter/1 also uses incr/2 to
determine if a prospective key exists before creating it. This should
be replaced with a CAS-version in the future.
8aeacc7
Jeremy Wrapped merle:literal/1 in conditional compilation; documentation
merle:literal/1 is rough and possibly dangerous to leave in production
code (why would we let random erlang clients submit arbitrary strings
to memcached?), so it is now compiled only when the DEV flag is
defined to erlc.

Added EDoc segments for addcounter/1, incr/2 and decr/2 have been added
57194fe
Jeremy README update
* added incr and decr to listed features

* added note to the effect that counters aren't erlang terms

* demonstration of incr, decr and addcounter

* examples of delete with counters and incr/decr on counters that
  don't exist
da6a303
Jeremy Adding myself to contributer list in NOTICES 3c0798a
Jeremy Revert "Adding myself to contributer list in NOTICES"
This reverts commit 3c0798a.
00538e0
Jeremy Revert "Revert "Adding myself to contributer list in NOTICES""
This reverts commit 00538e0.
03148eb
Jeremy adding LICENSE.txt to the project
merle is distributed under the MIT license, but doesn't seem to have
copy of the text of the MIT license with the code. With the addition
of LICENCE.txt, that little wrinkle should be cleared up.
ab1386e
@jesse-lauro jesse-lauro Trying to rebarify merle 655f4c0
@jesse-lauro jesse-lauro Adding a more convenient set method that can skip the creation of arb…
…itrary flag
cd05757
@jesse-lauro jesse-lauro Fixed stupid comp error miss 210caa0
@jesse-lauro jesse-lauro Adding ebin to .gitignore a18939f
@jesse-lauro jesse-lauro Made addcounter functionality work properly with target version of me…
…mcache
f724f4d
@jesse-lauro jesse-lauro Added support for retrieving counter values, or indeed any value stor…
…e in purely list form
c2b7b23
@jesse-lauro jesse-lauro Merged changes from pplov fork. Trying to get connection pooling and …
…clustering to play nice with added support for increment operations
76bb117
@jesse-lauro jesse-lauro Debugged issues with merle incr/decr operation d216f70
@jesse-lauro jesse-lauro Added support for timeouts to be passed as an arg to the various merl…
…e functions
e037527
@jesse-lauro jesse-lauro A few changes to the merle parsing of a get response... have to suppo…
…rt more than just erlang binary term storage in order to support inc/dec operations
a5e2d5f
@jesse-lauro jesse-lauro Fixed issue with using merle with elasticache... have to trim values …
…returned
a4fda86
@jesse-lauro jesse-lauro Fixed a bug with socket timeouts e619039
@jesse-lauro jesse-lauro Added logging for better debugging of memcache errors 48fefff
@jesse-lauro jesse-lauro Fixed bug with merle timeouts. When these occur it's best to kill the…
… merle process and let the merle_watcher restart it via the supervisor.
a9e8ecd
@jesse-lauro jesse-lauro Ripped out extraneous loggging statement left over from debugging 6f58759
@jesse-lauro jesse-lauro Added a round_robin option for connection pooling 0fc016f
@jesse-lauro jesse-lauro Fixed dynamic merle compile 73950f4
@jesse-lauro jesse-lauro Ended race condition with local_pg2 init... debugged round_robin merl…
…e connection pooling
b011877
@jesse-lauro jesse-lauro Splitting writes from reads on ets tables within process group 26e8ad8
@jesse-lauro jesse-lauro Trying to lock individual merle conns when in use 9e96b68
@jesse-lauro jesse-lauro Small bug fix with how we retrieve pids 495d231
@jesse-lauro jesse-lauro Small bug fix with how we create use_count records 2ed5898
@jesse-lauro jesse-lauro It helps to actually export the function 114e463
@jesse-lauro jesse-lauro Modified strategy so that merle_watchers are managed by process group…
….. They manage rebooting failed processes internally so that we don't back the local_pg2's message queue
94fa953
@jesse-lauro jesse-lauro Removed extraneous log message dd9e5bd
@jesse-lauro jesse-lauro Changed the way we release the merle connection slightly b6c2e95
@jesse-lauro jesse-lauro Reduced error logging to make less noisy 0be553f
@jesse-lauro jesse-lauro Changed exit scheme for merle processes.. should now issue exit messa…
…ge in queue, and move on
394d186
@jesse-lauro jesse-lauro Reduced error_logger logging when killing memcache connections a0435ab
@jesse-lauro jesse-lauro Simplified merle_cluster exec, complete with monitoring ccc51f8
@jesse-lauro jesse-lauro Fixed a bug with merle_watcher monitoring... fixed other shit ba88778
@jesse-lauro jesse-lauro Tweaked supervision tree for merle project, so that if process pool m…
…gr dies, all outstanding merle watchers will also die
5a708f4
@jesse-lauro jesse-lauro Adding timestamp that tracks time when connections unlock 1f7e194
@jesse-lauro jesse-lauro Added utility method for retrieving number of available merle connect…
…ions at any given time
059bab7
@jesse-lauro jesse-lauro Debugged count_available utility method ebe815d
@jesse-lauro jesse-lauro Bug fix to monitoring call 1eae31a
@jesse-lauro jesse-lauro Adding periodic clean so that we never lose merle connections, even i…
…n the event of a bug
83191ce
@jesse-lauro jesse-lauro Adding periodic clean so that we never lose merle connections, even i…
…n the event of a bug
43afd58
@jesse-lauro jesse-lauro Added proper calculation of now to merle code f76ea9e
@jesse-lauro jesse-lauro One more time calc f382bbe
@jesse-lauro jesse-lauro Now properly cleaning against proper interval 7aec952
@jesse-lauro jesse-lauro Added threshold in RR index incrementing 9381814
@jesse-lauro jesse-lauro Shifting the round robin index to include threshold 0f01024
@jesse-lauro jesse-lauro Merge pull request #1 from jesse-ad/locked-pgs
Locked pgs
3349a58
@jesse-lauro jesse-lauro Made some changes to the way join initializes state 29ebe6e
@jesse-lauro jesse-lauro Trying to fix merle initialization bugs 4cf1e33
@jesse-lauro jesse-lauro Removing overly verbose error logs from merle 07e19d7
@jesse-lauro jesse-lauro No longer greedily initializing all connections upon first start. Ins…
…tead we initialize on demand.
3fdbf4d
@jesse-lauro jesse-lauro Simplified connection pooling logic. Now use status is stored within …
…merle_client itself. merle_pool merely chooses a client, which is then checked out via the exec function
0e7459f
@jesse-lauro jesse-lauro Some bug fixes f5f6e11
@jesse-lauro jesse-lauro Returning result along with merle state upon call to merle:exec 2e7323f
@jesse-lauro jesse-lauro Fixed a merle code bug 29c93f7
@jesse-lauro jesse-lauro Merged old-connection-pooling branch. Now returning merle exec result…
… along with value
2ace37f
@jesse-lauro jesse-lauro Turned down log4erl logging on merle errors 592f5d8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Mar 19, 2010
  1. added another merle project to the readme.

    Joe Williams authored
Commits on May 5, 2010
  1. gen_server2 upgrade

    joewilliams authored
Commits on May 6, 2010
  1. added priority queue for gen_server2

    joewilliams authored
  2. s/get/getkey in t02

    joewilliams authored
Commits on Jun 28, 2010
  1. better disconnect procedure, thanks zabrane

    joewilliams authored
  2. disconnect should be a cast not call

    joewilliams authored
Commits on Mar 22, 2012
  1. added incr/2, decr/2, addcounter/1, literal/1

    Jeremy authored
    incr/2 implements the increment command for memcached, decr implements
    the decrement command.
    
    addcounter/1 uses a simple (non-CAS) set to initialized a counter set
    at zero, which can then be fiddled with via incr/2 and decr/2. This
    was necessary because merle functions mainly as a key/value store for
    arbitrary erlang data instead of a general data-store, such as we want
    for cacti purposes.
    
    literal/1 allows the user to submit literal strings over the socket to
    memcached. This should be used with extreme caution as memcached is
    intolerant of malformed input, but it is useful for determining what
    strings sent to memcached should look like and checking assumptions
    about its behavior.
    
    TODO: (optional) need a Check-And-Set version of addcounter so that
    distributed applications can update the same value with incr/2 and
    decr/2. This would save client code from having to try changing a
    value and then making a separate call to initialize it if it does not
    exist.
  2. better addcounter/1, incr/2 and decr/2

    Jeremy authored
    All three of the above functions now return more erlang-ish results,
    in keeping with the rest of merle. addcounter/1 also uses incr/2 to
    determine if a prospective key exists before creating it. This should
    be replaced with a CAS-version in the future.
Commits on Mar 26, 2012
  1. Wrapped merle:literal/1 in conditional compilation; documentation

    Jeremy authored
    merle:literal/1 is rough and possibly dangerous to leave in production
    code (why would we let random erlang clients submit arbitrary strings
    to memcached?), so it is now compiled only when the DEV flag is
    defined to erlc.
    
    Added EDoc segments for addcounter/1, incr/2 and decr/2 have been added
  2. README update

    Jeremy authored
    * added incr and decr to listed features
    
    * added note to the effect that counters aren't erlang terms
    
    * demonstration of incr, decr and addcounter
    
    * examples of delete with counters and incr/decr on counters that
      don't exist
  3. Adding myself to contributer list in NOTICES

    Jeremy authored
  4. Revert "Adding myself to contributer list in NOTICES"

    Jeremy authored
    This reverts commit 3c0798a.
Commits on Mar 27, 2012
  1. Revert "Revert "Adding myself to contributer list in NOTICES""

    Jeremy authored
    This reverts commit 00538e0.
  2. adding LICENSE.txt to the project

    Jeremy authored
    merle is distributed under the MIT license, but doesn't seem to have
    copy of the text of the MIT license with the code. With the addition
    of LICENCE.txt, that little wrinkle should be cleared up.
Commits on May 18, 2012
  1. @jesse-lauro

    Trying to rebarify merle

    jesse-lauro authored
  2. @jesse-lauro
  3. @jesse-lauro
  4. @jesse-lauro

    Adding ebin to .gitignore

    jesse-lauro authored
  5. @jesse-lauro
Commits on May 21, 2012
  1. @jesse-lauro
Commits on Jul 10, 2012
  1. @jesse-lauro

    Merged changes from pplov fork. Trying to get connection pooling and …

    jesse-lauro authored
    …clustering to play nice with added support for increment operations
  2. @jesse-lauro
Commits on Jul 11, 2012
  1. @jesse-lauro
  2. @jesse-lauro

    A few changes to the merle parsing of a get response... have to suppo…

    jesse-lauro authored
    …rt more than just erlang binary term storage in order to support inc/dec operations
Commits on Jul 17, 2012
  1. @jesse-lauro
  2. @jesse-lauro
Commits on Jul 20, 2012
  1. @jesse-lauro
Commits on Jul 24, 2012
  1. @jesse-lauro

    Fixed bug with merle timeouts. When these occur it's best to kill the…

    jesse-lauro authored
    … merle process and let the merle_watcher restart it via the supervisor.
Commits on Jul 27, 2012
  1. @jesse-lauro
Commits on Aug 15, 2012
  1. @jesse-lauro
  2. @jesse-lauro
Commits on Aug 16, 2012
  1. @jesse-lauro
Commits on Aug 21, 2012
  1. @jesse-lauro
  2. @jesse-lauro
  3. @jesse-lauro
  4. @jesse-lauro
  5. @jesse-lauro
Commits on Aug 22, 2012
  1. @jesse-lauro

    Modified strategy so that merle_watchers are managed by process group…

    jesse-lauro authored
    ….. They manage rebooting failed processes internally so that we don't back the local_pg2's message queue
  2. @jesse-lauro
  3. @jesse-lauro
  4. @jesse-lauro
  5. @jesse-lauro
  6. @jesse-lauro
  7. @jesse-lauro
  8. @jesse-lauro
Commits on Aug 23, 2012
  1. @jesse-lauro

    Tweaked supervision tree for merle project, so that if process pool m…

    jesse-lauro authored
    …gr dies, all outstanding merle watchers will also die
  2. @jesse-lauro
  3. @jesse-lauro
  4. @jesse-lauro
  5. @jesse-lauro

    Bug fix to monitoring call

    jesse-lauro authored
Commits on Aug 24, 2012
  1. @jesse-lauro
  2. @jesse-lauro
  3. @jesse-lauro
  4. @jesse-lauro

    One more time calc

    jesse-lauro authored
  5. @jesse-lauro
  6. @jesse-lauro
  7. @jesse-lauro
  8. @jesse-lauro

    Merge pull request #1 from jesse-ad/locked-pgs

    jesse-lauro authored
    Locked pgs
  9. @jesse-lauro
  10. @jesse-lauro
Commits on Nov 27, 2012
  1. @jesse-lauro
Commits on Jan 2, 2013
  1. @jesse-lauro

    No longer greedily initializing all connections upon first start. Ins…

    jesse-lauro authored
    …tead we initialize on demand.
Commits on Jan 3, 2013
  1. @jesse-lauro

    Simplified connection pooling logic. Now use status is stored within …

    jesse-lauro authored
    …merle_client itself. merle_pool merely chooses a client, which is then checked out via the exec function
Commits on Jan 4, 2013
  1. @jesse-lauro

    Some bug fixes

    jesse-lauro authored
Commits on Jan 10, 2013
  1. @jesse-lauro
  2. @jesse-lauro

    Fixed a merle code bug

    jesse-lauro authored
  3. @jesse-lauro
Commits on Jan 11, 2013
  1. @jesse-lauro
Something went wrong with that request. Please try again.