* Enable maximum connections to be configured
* Add arbiter for handling server startup
* Add handling of maxcon for command-line args
* Add changelog entry
* Re-add TLS
When we moved to use the Skytable client driver, we missed out TLS
support. This was re-added.
* Fix attempt to rm PID file if it doesn't exist
* Fix sequence of `inner_repl` and `inner_eval`
* Move arm64 tests into test workflow
* Archive artifacts for arm64
* Fix missing target
* Add upload assets step
* Simplify packaging
* Use caching on ARM runners and remove is_md_file
Since GH now supports `skip ci`, we don't need this anymore
* Save artifacts for ARM64
* Simplify hashing condition
* Fix caching condition
* Use IPv6 for wget
* Don't use https for wget
* Add automatic release for ARM64
* Remove the need for TableLockStateGuard
The htable impl uses locks under the hood making external locks
redundant.
* Use atomics instead of rwlock for poisoned state
* Simplify snapshot locking
* Add makefile
* Use makefile for builds
* Fix start_server command on Windows
* Use `&` for backgrounding
Since mingw on Windows provides a bash shell, we can just use this
* Use `cmd` as shell for Windows builds
* Use `start` for backgrounding on Windows
* No need for chmod
* Specify target for server to start up
* Sleep to let the server start up
* Update build docs
* Remove the pid file if runtime errors occur
* Clean up error handling and fix pid file creation
The pid file was being created before evaluating the args, now it may
happen that incorrect args or --help was passed: in that event, the pid
file remains created. This was also fixed, besides some refactoring.
* Deter other processes from using the same data dir
For more information, see #167
* Don't lock `pid_file`
Windows has mandatory locking so second instance won't be able to read
the PID of the other process. We'll just keep the file descriptor/handle
open
This is very useful because it removes the need for user intervention in
the event save on termination fails. Say the save operation fails due to
'some bad daemon' changing the directory's perms. Now skyd reports this
error while trying to save upon termination. Our sysadmin now fixes the
perms issue. The previous design would force the sysadmin to _somehow_
foreground skyd and hit enter. That is silly. The new design just
attempts to do a save operation every 10 seconds. So in case the issue
is fixed, the save operation will recover on its own.
Why not exponential backoff?
That's because the issue can be fixed some long time later and we may
have reached a large backoff value so the save that could have succeeded
would have to wait for a long duration before it can do anything
meaningful.
This also fixes a bug that caused BGSAVE errors to be reported as info
class log entries.