Commit Graph

60 Commits

Author SHA1 Message Date
tidwall 84a5120bc3 Fix tile38-cli output showing protocol size when piping
fixes #603
2021-03-30 08:59:25 -07:00
tidwall 6092f734e3 Better handle connection errors in tile38-cli
This commit fixes an issue with the tile38-cli where it will
continually print "Could not connect to Tile38..." when it was
unable to connect to the tile38-server.

It now cleanly prints the message only once.
2020-11-24 10:27:07 -07:00
Nikola Kovacs 8b271d1e0b
Fix typo in usage 2020-08-17 10:18:17 +02:00
tidwall d819db5f8b Added MONITOR command
closes #571
2020-08-12 12:38:52 -07:00
tidwall 66af8ab094 Fix tile38-cli from freezing with non-quoted geojson
This commit addresses an issue that began on 1.19 where the
deprecated tile38 native line protocol was removed in favor of
the more robust resp protocol. In turn the tile38 cli required
that all args are quoteless or quote escaped.

The commit ensures that the server returns the correct error
message and also loosens the strictness of the need for quoted
arguments in the tile38-cli.

fixes #513
2019-12-11 11:08:33 -07:00
tidwall 9d2753378e Fix infinite loop on connection failure 2019-11-03 13:29:33 -07:00
tidwall f9ea3f1e13 Fixed tile38-cli not propertly handling quotes
closes #500
2019-10-28 13:25:08 -07:00
tidwall 3ae59274e3 Removed evio option 2019-04-26 11:50:49 -07:00
tidwall e1a71453c7 Do not ignore SIGHUP
Use the `--nohup` flag or `nohup` command.
2019-03-19 13:49:35 -07:00
tidwall e47540ba09 Added auth flag 2019-03-14 12:05:51 -07:00
tidwall 87f57b0cd9 Added pprof flags 2019-03-14 09:24:18 -07:00
tidwall 01112c9a4f Ignore SIGHUP signals 2019-03-12 08:40:27 -07:00
tidwall 06b0d8e09e Allow for formatted json 2018-11-26 16:42:35 -07:00
tidwall 737561fa8b Fix version not being set at build, close #386 2018-11-15 13:45:55 -07:00
tidwall 7721fb8b8e Added substract flag to benchmarks 2018-11-11 09:05:26 -07:00
tidwall 090a05735f Added az benchmark test 2018-11-11 09:05:26 -07:00
tidwall 545e9316b0 Fix lua scripts 2018-11-11 09:05:26 -07:00
tidwall 44edf52f97 Updated benchmark tool 2018-11-11 09:05:11 -07:00
tidwall 372744b192 More hacking vendored circle.go 2018-11-11 09:04:00 -07:00
tidwall 161c6faff9 Added evio flag 2018-11-11 09:03:47 -07:00
tidwall 933f243c6c Code cleanup 2018-11-11 09:03:47 -07:00
tidwall 555e47036c Replaced net package with evio
- Added threads startup flag
- Replaced net package with evio
- Refactored controller into server
2018-10-28 15:51:47 -07:00
tidwall 6257ddba78 Faster point in polygon / GeoJSON updates
The big change is that the GeoJSON package has been completely
rewritten to fix a few of geometry calculation bugs, increase
performance, and to better follow the GeoJSON spec RFC 7946.

GeoJSON updates

- A LineString now requires at least two points.
- All json members, even foreign, now persist with the object.
- The bbox member persists too but is no longer used for geometry
  calculations. This is change in behavior. Previously Tile38 would
  treat the bbox as the object's physical rectangle.
- Corrections to geometry intersects and within calculations.

Faster spatial queries

- The performance of Point-in-polygon and object intersect operations
  are greatly improved for complex polygons and line strings. It went
  from O(n) to roughly O(log n).
- The same for all collection types with many children, including
  FeatureCollection, GeometryCollection, MultiPoint, MultiLineString,
  and MultiPolygon.

Codebase changes

- The pkg directory has been renamed to internal
- The GeoJSON internal package has been moved to a seperate repo at
  https://github.com/tidwall/geojson. It's now vendored.

Please look out for higher memory usage for datasets using complex
shapes. A complex shape is one that has 64 or more points. For these
shapes it's expected that there will be increase of least 54 bytes per
point.
2018-10-13 04:30:48 -07:00
tidwall 5ad27e7b5e Removed KML Support 2018-10-13 03:29:44 -07:00
tidwall 7e16ac536b Added flag for specifying event queue path
Use the `--queuefilename path` command flag

For full in-memory queue use `--queuefilename :memory:`
2018-09-04 12:26:10 -07:00
tidwall fb5c5fb244 1.13.0 2018-08-29 14:20:07 -06:00
Josh Baker e00cf4e187 Removed link 2018-06-16 11:40:22 -07:00
Leihb 33b354d83d handle Ctrl-D 2018-06-01 19:06:59 +08:00
Josh Baker 7e9871bb69 Refactor project layout
Move internal and support packages to pkg directory
2018-04-19 08:43:32 -07:00
Josh Baker 8f3ddd9e75 Add padding to menu 2018-04-12 17:18:59 -07:00
Josh Baker e45530c3b2 Add patreon link 2018-04-12 17:03:44 -07:00
Josh Baker 11b42c020b Add flags to disable AOF or to use a custom path
New server flags:
  --appendonly     yes/no
  --appendfilename path

Please note that leaders that have disabled AOF cannot be followed.
2018-04-11 10:53:36 -07:00
Alex Roitman bfa4bbe237 Lua (#225)
* Add periodic pruning of the lua state pool
2017-10-05 14:13:02 -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 d3329f07aa discard quiet logs 2017-10-03 08:53:09 -07:00
Josh Baker 8d5f447e3e updated logger 2017-10-03 08:49:33 -07:00
Josh Baker d0f4f2ef73 added geoadd test for compare 2017-08-09 15:25:40 -07:00
Josh Baker 91c44a5eef distinct benchmark types
the -t flag now supports set-point, set-rect, and set-string
2017-08-06 17:39:35 -07:00
Josh Baker 6008a78281 vendored redbench 2017-03-31 08:31:33 -07:00
Josh Baker 13235093c5 New tile38-benchmark tool
The tile38-benchmark tool is a new addition to the Tile38 suite alongside
tile38-server and tile38-cli. It's modeled after redis-benchmark with
matching input flags and output formatting.

It tests the common commands PING, GET, SET, and NEARBY. More commands
may be added later.

(mention #54)
2017-03-30 14:14:44 -07:00
Josh Baker b1c76d7d22 cli auto reconnect 2017-03-30 03:41:52 -07:00
Josh Baker a10b290357 pidfile option, closes #20 2017-02-24 07:05:28 -07:00
Josh Baker 7a077fa179 moved url up one line 2017-02-12 07:12:15 -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
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 f2026e1d8d grpc support 2016-09-11 21:09:02 -07:00
Josh Baker 988e6e5fcc fixes #28 windows cmd error 2016-07-22 11:11:17 -07:00
Josh Baker 3a6a33ea9a added hook example comment 2016-05-23 13:10:43 -07:00
Josh Baker 06490abe22 tty/noprompt 2016-04-05 07:15:29 -07:00