Commit Graph

1213 Commits

Author SHA1 Message Date
tidwall 79bee8523b Updated btree deps 2020-10-27 15:29:50 -07:00
tidwall 9998e03f6f Optimization for non-cross geofence detection
This commit fixes a performance issue with the algorithm that
determines with geofences are potential candidates for
notifications following a SET operation.

Details

Prior to commit b471873 (10 commits ago) there was a bug where
the "cross" detection was not firing in all cases. This happened
because when looking for candidates for "cross" due to a SET
operation, only the geofences that overlapped the previous
position of the object and the geofences that overlapped the new
position where searched. But, in fac, all of the geofences that
overlapped the union rectangle of the old and new position should
have been searched.

That commit fixed the problem by searching a union rect of the
old and new positions. While this is an accurate solution, it
caused a slowdown on systems that have big/wild position changes
that might cross a huge number of geofences, even when those
geofences did not need actually need "cross" detection.

The fix

With this commit the geofences that have a "cross" detection
are stored in a seperated tree from those that do not. This
allows for a hybrid of the functionality prior and post b471873.

Fixes #583
2020-10-23 09:51:27 -07:00
tidwall 100be7be3c Added tests 2020-10-23 09:50:51 -07:00
tidwall 5b77c446a7 1.22.2 2020-10-07 10:12:47 -07:00
tidwall 93e3a067b7 Truncate trailing zeros from AOF at startup
This commit addresses issue #230, where an AOF file will sometimes
not load due to the file being padded with trailing zeros. It's
uncertain what is causing this corruption, but it appears to be
coming from outside of the tile38-server process. I suspect it's
due to some block store layer in Kubernetes/Docker cloud
environments.

This fix allows for Tile38 to start up by discovering the trailing
zeros while loading the AOF and safely truncating the file as to
not include the zeros in the future.
2020-10-07 09:52:32 -07:00
tidwall 3f87be18b4 Fixed typo 2020-09-22 16:55:31 -07:00
tidwall 8e35787e68 1.22.1 2020-09-22 16:52:03 -07:00
tidwall 9a34a378bb Updated Go version 2020-09-22 16:50:49 -07:00
tidwall b1dc463c41 Updated dependencies 2020-09-22 16:43:58 -07:00
tidwall 43cd87dc3a Merge branch 'master' of https://github.com/tidwall/tile38 2020-09-22 16:26:58 -07:00
Josh Baker 5edfccdc49
Merge pull request #563 from axvq/readme-b3q-go-client
Update README.md (Go client)
2020-09-22 16:24:52 -07:00
Josh Baker ad7c672a98
Merge pull request #575 from nkovacs/patch-1
Fix typo in usage
2020-09-22 16:24:17 -07:00
tidwall b47187349b Fix "cross" detection on firing in some cases
Fixes #578
2020-09-22 16:19:49 -07:00
Nikola Kovacs 8b271d1e0b
Fix typo in usage 2020-08-17 10:18:17 +02:00
tidwall bd572b0d38 1.22.0 2020-08-12 12:50:13 -07:00
tidwall d819db5f8b Added MONITOR command
closes #571
2020-08-12 12:38:52 -07:00
tidwall 9093926135 Limit geohash precision to 12 2020-08-12 10:58:49 -07:00
tidwall 25a954a6aa Merge branch 'superloach-master' 2020-08-12 10:57:49 -07:00
Terra Brown 9202fd0206
s/64/12/ 2020-08-11 18:11:06 -04:00
tidwall f23b46cfc0 Hotfix for previous commit 2020-07-04 10:35:07 -07:00
tidwall f3622c3756 Fixed wrong order for fields with SCAN
This commit fixes an issue that happens when running SCAN on a
collection that has objects with fields, causing field values
to be mismatched with their respective keys.

This only occured with json output, and is a regression from #534.

Fixes #569
2020-07-04 10:12:06 -07:00
tidwall 68e2b6d736 Updated Kafka version 2020-07-03 11:57:15 -07:00
tidwall 712da8aefa Updated Kafka client 2020-06-24 14:20:22 -07:00
Josh Baker 6629eba8bf
Merge pull request #566 from larsw/larsw/fencing-crash-fix
Fix crash in fenceMatchRoam causing an index out of range panic
2020-06-24 09:48:44 -07:00
Lars Wilhelmsen 4fdbade7a4
Fix crash in fenceMatchRoam causing an index out of range panic 2020-06-18 15:43:18 +02:00
tidwall c1ba2d86aa 1.21.1 2020-06-04 13:01:30 -07:00
tidwall b7978f2cf4 Fix OUTPUT client command requiring authentication
This commit fixes an issue where the OUTPUT command requires
authentication when a server password has been set with
CONFIG SET requirepass. This was causing problems with clients
that use json responses, like the tile38-cli.

Fixes #564
2020-06-04 12:57:23 -07:00
b3q b2cf3c7f11
Update README.md (Go client) 2020-06-04 01:19:18 +05:00
Mads Schou-Andreasen cf757802a3 fixed default credentials 2020-05-30 10:26:25 +02:00
tidwall 9c6be0f78e 1.20.0 2020-05-20 15:28:07 -07:00
Mads Schou-Andreasen 846386c7ff Revert "gitlab fixes"
This reverts commit 8ae46dfda3.
2020-05-20 00:27:20 +02:00
Mads Schou-Andreasen 3bfd188c9c Revert "gitlab fixes 2"
This reverts commit 464d7845ea.
2020-05-20 00:27:16 +02:00
Mads Schou-Andreasen 464d7845ea gitlab fixes 2 2020-05-20 00:13:40 +02:00
Mads Schou-Andreasen 8ae46dfda3 gitlab fixes 2020-05-20 00:06:08 +02:00
Mads Schou-Andreasen bff11ad0ae minor documentation fix 2020-05-19 17:24:06 +02:00
Mads Schou-Andreasen 37224791f4 added geofence webhook for GCP Pubsub 2020-05-19 17:11:31 +02:00
tidwall 3718cd766b Added priority option for AMQP endpoints 2020-05-16 14:31:52 -07:00
tidwall 70cd167fc0 Fixed clip test #558 2020-05-03 09:59:49 -07:00
Alex Roitman 25579a052c Fix a bug in WHEREIN -- 0 values would always match, incorrectly. 2020-04-12 16:06:10 -07:00
Alex Roitman 914f51de11 Fixes 2020-04-09 09:59:24 -07:00
Alex Roitman fe0216c42c Restore previous behavior where non-existing fields are treated as zero-value. 2020-04-09 09:54:47 -07:00
Alex Roitman f3cc365d24 Pre-allocate where and wherein arrays. 2020-04-09 09:36:12 -07:00
Alex Roitman 1dd1af268a Fix clip test after geoOptions change. 2020-04-08 14:26:27 -07:00
Mike Poindexter 042582aef3 Update comment 2020-04-08 11:38:12 -07:00
Mike Poindexter fe6e3863ba Add bench tests for knn 2020-04-08 11:36:37 -07:00
Mike Poindexter 2a4272c95f Improve kNN behavior
The current KNN implementation has two areas that can be improved:

- The current behavior is somewhat incorrect. When performing a kNN
query, the current code fetches k items from the index, and then sorts
these items according to Haversine distance. The problem with this
approach is that since the items fetched from the index are ordered by
a Euclidean metric, there is no guarantee that item k + 1 is not closer
than item k in great circle distance, and hence incorrect results can be
returned when closer items beyond k exist.

- The secondary sort is a performance killer. This requires buffering
all k items (again...they were already run through a priority queue in)
the index, and then a sort. Since the items are mostly sorted, and
Go's sort implementation is a quickSort this is the worst case for the
sort algorithm.

Both of these can be fixed by applying a proper distance metric in
the index nearby operation. In addition, this cleans up the code
considerably, removing a number of special cases that applied only
to NEARBY operations.

This change implements a geodetic distance metric that ensures that
the order from the index is correct, eliminating the need for the
secondary sort and special filtering cases in the ScanWriter code.
2020-04-07 20:10:58 -07:00
Alex Roitman 34cb2affdc Add clipby subcommand to INTERSECTS/WITHIN 2020-04-03 16:49:06 -07:00
Josh Baker f02dee3db2
Merge pull request #545 from tidwall/index-kind-geometry-nooverride
Match geometry indexing to server config
2020-04-02 08:15:38 -07:00
Josh Baker 12a98c53e4
Merge pull request #543 from rshura/fix-clip-empty-rings
Skip empty rings when clipping polygons.
2020-04-02 08:15:14 -07:00
tidwall 951fc58e02 Match geometry indexing to server config 2020-03-25 15:35:31 -07:00