Age | Commit message (Collapse) | Author |
|
Some errors during server startup could leave the server in a zombie
state (running, but not listening). This commit makes sure the server
stops if errors occur during deferreds created on server startup.
Closes #8997.
|
|
Our current use of sys.exit(20) to stop the server when startup checks
fail affects logging in a bad way. This commit uses a system event
trigger to exit with the desired status code when startup checks fail.
Closes: #8996
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Related: #8961
|
|
To avoid corrupting data, Soledad Server checks all user databases
during startup to make sure all of them use the correct schema version.
This was done synchronously, so when there are many databases startup
would take a long time. This commit makes that verification
asynchronous, thus speeding up server startup.
|
|
|
|
|
|
|
|
Server config dictionary was being poorly updated, and not all default
values were being added in runtime. This was mainly a problem in tests,
but fixing may avoid possible bugs with this implementation in the
future.
|
|
|
|
If there's no limit to the number of concurrent blob writes in the
server, the maximum limit of open files will eventually be reached, and
the processing of requests will start crashing. This commit adds
a semaphore to limit the number of concurrent writes in the server.
Related: #8973
|
|
|
|
An errback was missing in the PUT renderer method of the incoming API.
Because of that, requests to that endpoint were not being correctly
finished in case of errors when writing blobs. That was causing delivery
requests to hang until timeout.
Closes: #8977
|
|
As kali pointed out, one can disable blobs after enabling it, which
would cause data loss as blobs documents would become unreacheable. This
commit adds a warning and refuses to start the server.
-- Resolves: #8866
|
|
|
|
|
|
|
|
Introduction of local services authentication added a configuration file
containing the auth tokens for each service. There were different names
for that file, and this commit standardizes all of them to the same
value: /etc/soledad/services.tokens
|
|
Soledad Server was previously using something in /srv to store blobs in
the server side. Debian/lintian doesn't like that at all, so we are
changing to /var/lib/soledad/blobs.
Closes: #8948
|
|
It isn't closed by Twisted like the producer is.
-- Resolves: #8924
-- Related: #8932
|
|
|
|
|
|
|
|
|
|
Schema was using a default value instead of using the one passed as a
parameter. Additional test for formatter is also included.
-- Related: #8867
|
|
Incoming API is supposed to be able to, given a valid service token,
write a incoming document into any user database. Leaving the parameter
as 'uuid' triggers defensive code against unauthorized accesses between
users. This commit renames the parameter so this isn't checked.
-- Related: #8867
|
|
-- Related: #8867
|
|
-- Related: #8867
|
|
-- Related: #8867
|
|
This way the file gets copied during package install.
-- Related: #8867
|
|
-- Related: #8867
|
|
-- Related: #8867
|
|
-- Related: #8867
|
|
For tests, we may want to configure the server with non-default options,
and the easiest way to do this is by creating a configuration file in
a temporary directory and passing the file name by means of an
environment variable.
This commit changes the server config file loading scheme to account for
a variable called SOLEDAD_SERVER_CONFIG_FILE. If that variable is set,
the configuration is read from the file pointed by it. Otherwise,
/etc/soledad/soledad-server.conf is used.
|
|
We do not want to enable blobs on any server that, by mistake, deploys
from master or from a released version in the 0.10.x series.
for testing it's more sensible to allow instantiating the server with a
custom config file.
|
|
|
|
|
|
|
|
|
|
|
|
This commit is complementary to the previous one. It adds a test for the
reported bug (listing default namespace was listing others) and fixes
it.
-- Related: #8882
|
|
All blobs were being stored in a single folder when using namespaces,
this commits adds path partitioning as discussed on #8882, which should
help with a large number of files (each folder will hold a smaller
subset, allowing the use of better filesystem walk strategies).
Also, the default empty namespace is now called 'default' to prevent it
from listing other namespaces contents. So everything will always use
namespaces, with the option to use it explicitly or just fall to the
default one.
-- Related: #8882
|