tidwall
23b016d192
Fix excessive memory usage for objects with TTLs
...
This commit fixes an issue where Tile38 was using lots of extra
memory to track objects that are marked to expire. This was
creating problems with applications that set big TTLs.
How it worked before:
Every collection had a unique hashmap that stores expiration
timestamps for every object in that collection. Along with
the hashmaps, there's also one big server-wide list that gets
appended every time a new SET+EX is performed.
From a background routine, this list is looped over at least
10 times per second and is randomly searched for potential
candidates that might need expiring. The routine then removes
those entries from the list and tests if the objects matching
the entries have actually expired. If so, these objects are
deleted them from the database. When at least 25% of
the 20 candidates are deleted the loop is immediately
continued, otherwise the loop backs off with a 100ms pause.
Why this was a problem.
The list grows one entry for every SET+EX. When TTLs are long,
like 24-hours or more, it would take at least that much time
before the entry is removed. So for databased that have objects
that use TTLs and are updated often this could lead to a very
large list.
How it was fixed.
The list was removed and the hashmap is now search randomly. This
required a new hashmap implementation, as the built-in Go map
does not provide an operation for randomly geting entries. The
chosen implementation is a robinhood-hash because it provides
open-addressing, which makes for simple random bucket selections.
Issue #502
2019-10-29 11:19:33 -07:00
Josh Baker
df477bf3f4
Merge pull request #464 from rshura/area-expression
...
Add area expressions.
2019-10-28 13:45:10 -07:00
tidwall
10f7bfc445
Fix invalid pubsub format for json output
...
This commit fixes a bug that causes bad formatting for geofence
notifications when a client's output is set to JSON.
closes #499
2019-10-28 12:51:44 -07:00
tidwall
87185319b2
Fix JSET cancels expiry
...
issue #498
2019-10-08 09:45:46 -07:00
tidwall
639f6e2deb
Replaced boxtree for rbang
2019-09-12 18:42:53 -07:00
tidwall
3d96b17258
GC pauses be gone
2019-09-04 12:47:30 -07:00
tidwall
2571ce5106
Minimize AOF buffer releases
2019-09-03 17:01:26 -07:00
tidwall
4bd6b4b838
Moved ReadMemStats into a background polling function
...
This will keep profile commands such as SERVER and STATS from
stopping the world.
2019-09-03 16:57:49 -07:00
tidwall
e167e88e8f
removed diag
2019-09-03 16:39:51 -07:00
tidwall
b6884fce63
diagnostics
2019-09-03 16:35:42 -07:00
tidwall
aedd972516
Fixed invalid count for nearby queries
...
closes #489
2019-08-22 15:53:37 -07:00
saltatory
ec5a5342a2
Added RLock on connections map
2019-08-09 08:48:23 -07:00
tidwall
f7888c1edf
Fixed malformed json for chans command
...
Mentioned by ds2xor on Slack
2019-08-03 10:10:28 -07:00
Alex Roitman
b9e2c67933
Fix lua pool pruning
2019-08-01 11:55:52 -07:00
Alex Roitman
dd09ffbe13
Fix parser for multiple negations.
2019-06-14 10:02:26 -07:00
Alex Roitman
7c541949b1
Unnecessary code.
2019-06-13 14:12:42 -07:00
Alex Roitman
eb214cb889
Better naming and comments.
2019-06-13 13:33:07 -07:00
Alex Roitman
2d83e18934
Add expression errors test. Make parser stricter.
2019-06-13 13:10:47 -07:00
Alex Roitman
0c3a5d02ca
Fixes
2019-06-13 12:04:04 -07:00
Alex Roitman
3ded4e3a44
Refactor using method expressions, to avoid repeating code.
2019-06-13 10:56:33 -07:00
Alex Roitman
81f57ba6f6
Fix one case in expression/expression tests
2019-06-13 09:53:17 -07:00
Alex Roitman
496ace25d3
Refactoring/cleanup/fixes.
2019-06-11 17:13:33 -07:00
Alex Roitman
d0ca579f5c
Add area expressions.
...
Add parser.
Hook up to test command.
Add tests for expressions in test command.
2019-06-10 14:47:42 -07:00
Josh Baker
aa73fcd17b
Added unsubscribing from active channel
...
related #448
2019-06-04 13:49:32 -07:00
Melissa Baker
46f5d2d224
Fixed nearby json field results showing wrong data
...
issue #453
2019-05-28 12:17:59 -07:00
tidwall
3ae59274e3
Removed evio option
2019-04-26 11:50:49 -07:00
Alex Roitman
cbf10b7472
Rework timeouts to allow prepending any command with the TIMEOUT seconds
2019-04-25 14:15:53 -07:00
Alex Roitman
49111a4dce
Add timeouts for lua scripts
2019-04-24 17:00:52 -07:00
Alex Roitman
31525487c3
Add timeout tests. Fix a bug.
2019-04-24 13:20:57 -07:00
Alex Roitman
e514a0287f
Add timeout subcommand to scan/search commands.
...
Use per-query timeout for those commands, if it was given.
2019-04-24 12:02:39 -07:00
tidwall
0aecef6a5c
Added TIMEOUT command
2019-04-24 05:09:41 -07:00
tidwall
bb33467da1
Fix crash with fence ROAM
...
closes #440
2019-04-23 11:16:55 -07:00
tidwall
8c69fbff31
Fixed clients blocking while webook sending
...
Closes #428
2019-03-16 15:43:33 -07:00
tidwall
762607dc0a
Added geofence delivery counter
2019-03-14 11:23:23 -07:00
tidwall
5333fab870
Recycle aof buffer
2019-03-10 10:48:14 -07:00
tidwall
fc3e8b4359
Fix nearby with match query invalid results
...
closes #421
2019-03-01 06:55:26 -07:00
Steven Wolfe
fd20190bff
Verify hook names match for processing
2019-02-22 15:58:13 -07:00
Parham Alvani
e0ddd5e6a6
Adds Server command for lua scripts.
2019-02-17 13:28:20 +03:30
tidwall
fb7259b10b
Changed clip errors and json result type
2019-02-12 05:33:20 -07:00
tidwall
62f44ed055
Merge branch 'master' of https://github.com/tidwall/tile38
2019-02-12 05:06:10 -07:00
Josh Baker
6fffa75b58
Merge pull request #409 from rshura/test_cmd
...
Test command
2019-02-12 05:05:50 -07:00
tidwall
14b616b150
More test fields
2019-02-11 15:42:35 -07:00
tidwall
92c1ce8ef9
Update tinybtree dep
2019-02-11 13:39:29 -07:00
Alex Roitman
c849ab19ac
Implement test command
2019-02-08 13:57:29 -08:00
Alex Roitman
f7ba43360e
Typo in error messages
2019-02-08 13:56:07 -08:00
Steven Wolfe
79c902efbf
Adding more replication data to INFO response
2019-01-18 14:51:20 -07:00
Steven Wolfe
ffd8ca915c
Testing for valid INFO and CLIENT Json output
2019-01-15 11:08:19 -07:00
Steven Wolfe
0740ca13cd
JSON Output for INFO and CLIENT
2019-01-14 15:29:29 -07:00
Steven Wolfe
4392fb44bd
Fixing KEYS command and tests
2019-01-14 11:06:12 -07:00
Steven Wolfe
4ad2e920f5
Merge branch 'sl/requirevalid' of https://github.com/stevelacy/tile38 into stevelacy-sl/requirevalid
2019-01-10 12:49:48 -07:00