Commit Graph

183 Commits

Author SHA1 Message Date
Alex Roitman bfa4bbe237 Lua (#225)
* Add periodic pruning of the lua state pool
2017-10-05 14:13:02 -07:00
Lenny Hartmann d6fe2eec96 Sqs endpoint (#221)
* test

* undo test

* Added aws SQS endpoint

* Added aws vendor

* Bug fixes

* enabled NOCOPY in build.sh
2017-10-05 14:08:03 -07:00
Alex Roitman b55300b729 Lua scripting feature. (#224)
* Start on lua scripting

* Implement evalsha, script load, script exists, and script flush

* Type conversions from lua to resp/json.
Refactor to make luastate and luascripts persistent in the controller.

* Change controller.command and all underlying commands to return resp.Value.
Serialize only during the ouput.

* First stab at tile38 call from lua

* Change tile38 into tile38.call in Lua

* Property return errors from scripts

* Minor refactoring.  No locking on script run

* Cleanup/refactoring

* Create a pool of 5 lua states, allow for more as needed. Refactor.

* Use safe map for scripts.  Add a limit for max number of lua states.  Refactor.

* Refactor

* Refactor script commands into atomic, read-only, and non-atomic classes.
Proper locking for all three classes.
Add tests for scripts

* More tests for scripts

* Properly escape newlines in lua-produced errors

* Better test for readonly failure

* Correctly convert ok/err messages between lua and resp.
Add pcall, sha1hex, error_reply, status_reply functions to tile38 namespace in lua.

* Add pcall test. Change writeErr to work with string argument

* Make sure eval/evalsha never attempt to write AOF

* Add eval-set and eval-get to benchmarks

* Fix eval benchmark tests, add more

* Improve benchmarks

* Optimizations and refactoring.

* Add lua memtest

* Typo

* Add dependency

* golint fixes

* gofmt fixes

* Add scripting commands to the core/commands.json

* Use ARGV for args inside lua
2017-10-05 08:20:40 -07:00
Josh Baker d4d51a8191 use redcon for loading aof 2017-10-04 16:15:20 -07:00
Josh Baker 1c8027c580 updated denied message 2017-10-04 15:58:52 -07:00
Josh Baker f8bc40d881 fix pipeling fragmentation 2017-10-04 13:07:56 -07:00
Josh Baker 86f9248a78 remove bsd file 2017-10-03 09:10:08 -07:00
Josh Baker 8d5f447e3e updated logger 2017-10-03 08:49:33 -07:00
Josh Baker d817814200 Optimized pipelining
Performance gains for pipelining commands over the network.
Using tile38-benchmark and the -P flag it's possible to see 2x-10x boost
in requests per second.
2017-09-30 19:34:25 -07:00
Josh Baker 1780badf1b isolated expires list mutex 2017-09-30 11:06:10 -07:00
Josh Baker a99613fe23 removed locks from memory bg operations 2017-09-30 08:16:34 -07:00
Josh Baker 4a3800596e added dev sleep command 2017-09-30 08:11:10 -07:00
Josh Baker 770c6ad322 atomic clients 2017-09-30 08:00:29 -07:00
Josh Baker 0db57db1f1 moved follow counter to atomic 2017-09-30 07:34:08 -07:00
Josh Baker 920dc3adb6 atomic ints/bools 2017-09-30 07:29:03 -07:00
Josh Baker 99307da6ea isolated config locks 2017-09-30 06:56:52 -07:00
Josh Baker d8f11354df wip config 2017-09-29 18:11:05 -07:00
Josh Baker b1da3a1ea5 Merge branch 'mqtt-endpoint' of https://github.com/m1ome/tile38 into m1ome-mqtt-endpoint 2017-09-04 07:22:25 -07:00
Josh Baker ff4db894a2 scan count with wherein, fixes #217 2017-09-04 07:20:03 -07:00
Josh Baker cf33e0f2af omit defaults on rewrite 2017-08-24 14:24:11 -07:00
Josh Baker 730502d99d keepalive default of 300 seconds 2017-08-24 14:15:07 -07:00
Alex Roitman c8ed7caa2e Add wherein command 2017-08-23 13:13:12 -07:00
Josh Baker bb7b6411b8 Close file aof before renaming for windows
Windows does not allow for renaming files that are use.

fixes #211

thanks @icewukong
2017-08-10 18:34:22 -07:00
Josh Baker cd057088d9 index optimizations 2017-08-10 17:32:40 -07:00
Josh Baker 81ef8218fb lifted limit cap 2017-08-10 13:31:36 -07:00
Josh Baker cb062bded4 allow reads on disconnected followers (#121) 2017-08-04 05:28:35 -07:00
Josh Baker e2357eac3e empty results when key not found, #207 2017-08-03 04:01:07 -07:00
Josh Baker aafae38412 endpoint send trace for #208 2017-08-03 03:05:24 -07:00
Josh Baker 1ccaf71375 add echo command (#201) 2017-07-27 09:10:33 -07:00
Josh Baker 90f87bc3fb knn overscan ordering (#195) 2017-07-25 20:23:21 -07:00
Josh Baker 3fae3f70eb allow KNN cursors 2017-07-24 08:42:12 -07:00
Josh Baker 300635727a apply LIMIT after WHERE clause, fix #199 2017-07-24 08:26:48 -07:00
Josh Baker 29634f86ba Omit fields for Resp when NOFIELDS is used. (#198)
fixes #198
2017-07-21 15:56:29 -07:00
Josh Baker f9fa48db21 use redis-style expires
Updated the Tile38 expires to match the Redis implmentation at
https://redis.io/commands/expire#how-redis-expires-keys.

It now supports passive and active expires with sub-millisecond
accuracy.

This addresses issue #156
2017-03-29 12:50:04 -07:00
Pavel Makarenko ce8da8e74b Merged AMQP endpoint 2017-03-23 10:27:23 +03:00
Pavel Makarenko 710ed96850 AMQP webhook support (#159) 2017-03-15 10:45:35 -07:00
Pavel Makarenko cf8afa3617 Added QoS and retained flags 2017-03-08 00:39:49 +03:00
Pavel Makarenko 9e0c8fc28e Added MQTT endpoint 2017-03-08 00:15:18 +03:00
Pavel Makarenko 790c660455 Kafka - Support in webhooks. (#152)
* Added sarama in vendor dependency

* Fixed Sarama deps

* Added Kafka endpoint support
2017-03-06 13:18:58 -07:00
Josh Baker d88f4594ac distances on geofence, fixes #141 2017-02-24 06:25:50 -07:00
Josh Baker 374d199d07 detect inside on enter, fixes #150 2017-02-24 06:03:11 -07:00
Josh Baker a5b8621557 Merge branch 'master' of https://github.com/tidwall/tile38 2017-02-12 07:09:46 -07:00
Josh Baker 033d0d333e redundant condition 2017-02-12 07:06:56 -07:00
Mike Kabischev a4705cee23 remove mutex from HTTP endpoint (#148)
* fix leaking http connections

* remove unused fields

* remove mutex from HTTPEndpointConn
2017-02-10 12:09:07 -07:00
Mike Kabischev 06175932d2 Fix leaking http connections (#147)
* fix leaking http connections

* remove unused fields
2017-02-10 06:55:01 -07:00
Mike Kabischev ed300d7032 remove unused fields 2017-02-10 16:32:46 +03:00
mike kabischev 009c52d365 Merge remote-tracking branch 'upstream/master' 2017-02-10 16:20:12 +03:00
mike kabischev 2ddb9375f6 fix leaking http connections 2017-02-10 16:17:57 +03:00
Josh Baker 22f1b1bd81 resend on expired endpoint 2017-02-10 05:27:02 -07:00
Josh Baker 56e0bac24c TCP Keepalives
Enabled TCP keepalive packets to determine if the connection is still
valid, and terminate if needed. It also helps with maintaining idle
connections.

Default to 300 seconds and can be changed by:

    CONFIG SET keepalive 300

addresses #145: clients not being cleaned up properly
2017-02-09 10:01:59 -07:00