183 Commits

Author SHA1 Message Date
mike kabischev
237d4b2284 fix #143 broken hook data 2017-02-08 14:16:54 +03:00
Josh Baker
04290ec535 KNN results for NEARBY command
This commit includes the ability to search for k nearest neighbors using
a NEARBY command. When the LIMIT keyword is included and the 'meters'
param is excluded, the knn algorithm will be used instead of the
standard overlap+haversine algorithm.

   NEARBY fleet LIMIT 10 POINT 33.5 -115.8

This will find the 10 closest points to 33.5,-115.8.

closes #136, #130, and #138.
ping @tomquas, @joernroeder, and @m1ome
2017-01-30 16:41:12 -07:00
Josh Baker
49e1fcce7a Added CLIENT command
CLIENT LIST
CLIENT SETNAME name
CLIENT GETNAME
CLIENT KILL [ip:port] [ID client-id] [ADDR ip:port]

The CLIENT LIST command returns

  One client connection per line (separated by LF)
  Each line is composed of a succession of property=value
  fields separated by a space character.

  id: an unique 64-bit client ID
  addr: address/port of the clien
  age: total duration of the connection in seconds
  idle: idle time of the connection in seconds
  name: the name of the client

Suggested by @UriHendler, closes #139
2017-01-30 11:35:42 -07:00
Josh Baker
6b92d923d8 added debug log 2017-01-21 17:10:43 -07:00
w1n2k
69b62e97e3 Lock refactoring 2017-01-20 12:09:39 +03:00
w1n2k
f0fb28c68d Implemented hot swap of autogc 2017-01-19 19:00:14 +03:00
w1n2k
e65e5842f4 Implementing autogc configuration support 2017-01-19 11:23:42 +03:00
Josh Baker
627555cdc8 Merge branch 'memoptz' 2017-01-13 10:03:02 -07:00
Josh Baker
2945479321 Allow 3d object searches with 2d geojson area
fixes #127
2017-01-13 09:31:35 -07:00
Josh Baker
cadf6cb851 Added http-transport to SERVER call
* fixed index out of range error when --http-transport provided
  without value.
2017-01-13 08:53:01 -07:00
Pavel Makarenko
a4e5d38461 Disable HTTP & WebSocket transports on demand. (#128)
* Added .idea folder into .gitignore

* Added --http-transport flag

* Fixed test & Removed some dumps

* Added support of yes/no
2017-01-13 08:45:28 -07:00
Pavel Makarenko
06dbb14562 Fixed [Unexpected] EOF bug with websockets (#126)
* Fixed [Unexpected] EOF bug with websockets

* Fixed condition
2017-01-13 08:26:58 -07:00
Josh Baker
e9fa4ff0b3 minor optimization 2017-01-13 08:04:33 -07:00
Pavel Makarenko
37c8fd298f Redis endpoint for webhooks (#123)
* Added redis endpoint

* Minor CS fixes
2017-01-13 08:01:34 -07:00
Pavel Makarenko
4300feccd6 Fixed #124: Added Content-Type json to HTTP headers (#125)
* Fixed #124: Added Content-Type json to HTTP headers

* Moved setting header after creation of request
2017-01-11 04:41:58 -07:00
w1n2k
872f4c95b2 Fixed disque typo timeout handling 2017-01-11 09:06:19 +03:00
w1n2k
1b20a4c590 Added distance to NEARBY command 2017-01-10 19:49:48 +03:00
Josh Baker
c02609ad44 Fixed missing response in TTL json command
Using the tile38-cli, the TTL command omitted the ttl value from the
json response.

For example:

    127.0.0.1:9851> TTL my ufo
    {"ok":true,"elapsed":"5.57µs"}

Is now fixed to show
    127.0.0.1:9851> TTL my ufo
    {"ok":true,"ttl":-1,"elapsed":"5.57µs"}

Where "ttl" is the remaining time before the object is is deleted.
The value -1 means that the object is available, but does not have
an expiration.

Thanks @phulst for finding this bug. closes #116
2017-01-07 09:27:36 -07:00
Josh Baker
738f7eb43c removed panic 2016-12-31 09:39:39 -07:00
Josh Baker
b9e61777e6 moved fields to a collection map 2016-12-31 09:29:02 -07:00
Josh Baker
d6ca25d14b updated collection ReplaceOrInsert 10% bump 2016-12-30 18:12:18 -07:00
Josh Baker
12bf65bbb9 wip 2016-12-30 14:18:28 -07:00
Josh Baker
bafb1823b3 Metadata for Webhooks
Added the `META name value` keyword to the SETHOOK command.

Allows for adding metadata to a webhook. For example:

    SETHOOK myhook http://endpoint/ META m1 12 META m2 13 NEARBY ...

Would result in notification that contain the "meta" element, which is
represented like:

    "meta":{"m1":"12","m2":"13"}

Thanks for the suggestion @amorskoy

closed #105
2016-12-29 08:50:54 -07:00
Josh Baker
73fd3cf7de Added PDEL command
PDEL key pattern

Removes all objects where the id matches the pattern

Thanks to @GameFreedom for the suggestion. closes #104
2016-12-29 07:53:01 -07:00
Josh Baker
3e3d364911 test app for #107 2016-12-28 11:16:28 -07:00
Josh Baker
5d378b8ec9 debug.FreeOSMemory 2016-12-22 14:52:37 -07:00
Josh Baker
ef74a63c79 Add SCAN to Roaming Geofences
Can now get back more details about an object:

     NEARBY people FENCE ROAM people * 5000 SCAN :*

For more information see #96

Thanks @amorskoy for suggesting feature in #93

Closes #96
2016-12-15 11:37:38 -07:00
Josh Baker
6c52f3f3f1 added command filter for geofences
It's now possible to mask the fence notifications based on the
command. For example, if we only want "set" and "del" commands.

NEARBY fleet FENCE COMMANDS set,del POINT 33 -115 10000

Suggested by @amorskoy, closes #99
2016-12-15 10:00:08 -07:00
Josh Baker
b6c645791f output json fix #98 2016-12-14 18:19:30 -07:00
Josh Baker
bf0fee122d persist jset, jdel to aof. fixes #98 2016-12-14 07:37:02 -07:00
Josh Baker
44cf149325 added JSET, JGET, JDEL commands
JSET key id path value [RAW]
JGET key id path [RAW]
JDEL key id path

Allows for working with JSON strings, for example:

  JSET user 901 name Tom
  JGET user 901
  > '{"name":"Tom"}'
  JSET user 901 name.first Tom
  JSET user 901 name.last Anderson
  > '{"name":{"first":"Tom","last":"Anderson"}'
  JDEL user 901 name.last
  > '{"name":{"first":"Tom"}'

All commands use the GJSON path syntax, for more information:

  Setting JSON: https://github.com/tidwall/sjson
  Getting JSON: https://github.com/tidwall/gjson
2016-12-12 10:33:28 -07:00
Josh Baker
3a483e55ff Group geofence events
Feature request by @huangpeizhi #87
2016-12-06 10:30:48 -07:00
Josh Baker
0afdf67c90 fix to aof corruption during aofshrink command.
This addresses an issue #73 that @huangpeizhi discovered while using
Tile38 in production where AOFSHRINK sometimes corrupts the database
causing the server to not start the next time.
2016-12-05 16:24:26 -07:00
Josh Baker
06c873a3e8 Merge branch 'master' into memoptz 2016-12-04 12:15:09 -07:00
Josh Baker
a664bade48 added black-box testing 2016-12-02 09:14:34 -07:00
Josh Baker
025a584903 Merge branch 'master' into memoptz 2016-11-17 09:41:02 -07:00
Josh Baker
76ce0e58b2 fix #84, roaming fence deadlock 2016-11-17 09:04:31 -07:00
Josh Baker
8d7290915e doc typos 2016-11-16 13:01:19 -07:00
Josh Baker
d61b194e49 allow for precise search for strings, fixes #82 2016-11-14 11:05:28 -07:00
Josh Baker
cbeab30d5e allow for precise search for strings, fixes #82 2016-11-14 11:03:54 -07:00
Josh Baker
fa74d14942 Merge branch 'master' into memoptz 2016-11-14 08:23:06 -07:00
Josh Baker
fbeecaacd9 faster aof loading
About 30% faster loading of AOF file during server restart.
2016-11-09 13:43:57 -07:00
Josh Baker
1ac6ad9ebd optimized idprops field for #71 2016-11-07 13:04:21 -07:00
Josh Baker
062da50888 match on prefix star, fixes #76 2016-11-02 09:15:48 -07:00
Josh Baker
659a715065 Optimized GeoJSON
Removed map[string]interface{} for Feature type.
Replaced "encoding/json" with "tidwall/gjson" for parsing.
Removed ablility to serialize to binary. JSON only.
2016-11-02 05:51:48 -07:00
Josh Baker
fbff0f4eef fix #77 NX/XX bug 2016-10-31 10:17:30 -07:00
Josh Baker
36ab60b89c added stats.mem_alloc field 2016-10-24 15:58:30 -07:00
Josh Baker
bb2bb451b2 memory optimizations
increased b-tree degrees from 16 to 48
increased r-tree degress from 8 to 15
changed r-tree from float64 to float32
2016-10-24 15:35:47 -07:00
Josh Baker
a38228cba0 fix #70, 1.5.2 2016-10-20 17:47:15 -07:00
Josh Baker
4630a78613 fix #67, hang on EXPIRE 2016-10-16 08:50:02 -07:00