When the last connection is closed, we flag the
document for unloading, until we save and
unload and have nothing further to do. However,
if during that time a new client joins the
document, we reset the unloading state and
recover.
A previously failing and disabled test is now
re-enabled and passes.
Change-Id: I425a9286ec5df56064132e5e4227227761c65830
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
In certain scenarios, such as with Proxy.php,
we don't have CheckFileInfo in advance and
need to request it before proceeding further.
This adds a wrapper to wait for the
CheckFileInfo request to complete.
Change-Id: I8afa955f841899eb667c02168a29a68c1dffb21b
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Also pass 'autosave' status in a more conventional way.
Ideally we would split 'save' away from a ChildSession / ClientSession
and have this on DocumentBroker / Document - for the future.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I39a6caf8b17fa2fc2d940ae0d11bdc2d4da20b6c
This reduces code duplication and makes
the code more readable by extracting
the huge block that processes plugins.
Change-Id: I2dc243173a4122ae1d5fc5b3fa2b40daff9664e4
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Forkit forking children is done in response to socket messages,
and parent process death should kill us too.
In general if we are relying on a poll to spin to achieve
something, we have a performance bug; this should exacerbate them
to flush them out.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I60d1c3b3c2532bbd686a3d3cfdea10f2a541a19a
This lets us detect when Kit processes die without waiting for
the poll() timeout and feebly spinning the PrisonerPoll loop.
Instead we get notified immediately; but to do this we then need
to be able to safely transfer the socket between SocketPolls.
SocketPoll's should own Sockets - so by switching ChildProcess to
use a weak_ptr and also the NewChildren list - we can have standard
ownership and a sensible transfer between SocketPolls. A Socket is
owned either by PrisonerPoll or a DocumentBroker in the normal way.
Clean the NewChildren list as/when children are unexpectedly killed
apparently there are still some ownership issues probably around
the strong ChildProcess _ws pointer.
Change-Id: Ie541a9d03e36aee53fd57c45953e0de21ebe1828
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Reduce the uses of MOBILEAPP conditionals by using the isMobileApp
function.
Signed-off-by: Jaume Pujantell <jaume.pujantell@collabora.com>
Change-Id: If541307fbc457b342674cc560b6c53454f3904cf
This should not have been necessary for a long time; but add
some assertions to help check.
Change-Id: Iedbc0bb57839209d1f1caeaab7094e335c881e57
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
- Docbroker only uploads the document when the document is already saved and
there are no further modifications.
- But when using typer once dockerbroker saves the document and tries to upload
there are already new changes to the document. Therefore, docbroker keeps on
saving this new changes and keeps on skiping the upload as there are new
changes to the document; until it times out
Signed-off-by: Rashesh Padia <rashesh.padia@collabora.com>
Change-Id: I427d37a6228299006530daddebdf4365af63588b
This replaces the synchronous loading logic
with the new asynchronous one.
Change-Id: I20fd7903cffbbd7c524d8051295113439ef75d5b
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Replace a few cases of Util::toString(...), too.
Signed-off-by: Aron Budea <aron.budea@collabora.com>
Change-Id: I53c5dbbdf2f60710e94add9dd137aa9becb7bd3e
config.h should be included as the 1st line in each source file.
It should not be included in headers.
config_version.h which changes on every commit should not be
included widely - so remove it from the HttpRequest heeader to
save tinderbox's ccache.
Fetch version info from helper methods rather than in-lining via
defines, to better encapsulate.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: If449a36f1ac61940f04d70d5f4180db389d9b4c4
This moves the clipboard resque logic earlier to
make sure it is cached before the Kit process
exits.
By putting the clipboard-fetching command before
the save-before-exit, we should get the clipboard
in most-all cases. There are still edge-cases
that can slip through, but they should be much
less frequent, and they will require much more
involved logic (tbd).
Change-Id: I0eff95c28524002a6131fa0a57ef8e09ae21ca59
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Will be used for parallel loading, when we
transfer thread ownership to DocBroker.
Change-Id: I99dea58afc6c86d7937e32c8b3313676cc46d3b7
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
This is to allow for having gotten the WopiFileInfo
before creating DocBroker at all.
Change-Id: I0f21442860e09385e504b9a98049af286cc5b404
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Also better explain that we dump sessions twice.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: Iec3ad5b9f78f0572d43cfba1191bcec3584c0092
When always_save_on_exit=true we should
still not upload the document when it
isn't modified.
In this case, because we now always
save the document (forced) when
always_save_on_exit=true, and because
saving always generates a new file on
disk, with a new timestamp, we couldn't
detect that there are no modifications.
We now still force save, but ask Core
to skip it if the document is unmodified.
This is safe since we now always issue
the save, but rely on Core to do the
right thing. When the document is saved,
we do the normal upload as in that case
we know we have a new version of the
document, which must be uploaded.
Worth noting that the closedocument
command doesn't trigger the same path.
To reproduce the issue, we need a new
test that disconnects, instead of the
graceful closedocument command.
Change-Id: Iaa4e0363ed2eca124f2d1943393e65c0c187aa18
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
This forces autoSave when always_save_on_exit
is true. This is needed so we can guarantee
that we don't have modification and that
we upload if there has every been one.
The latter case is checked in
DocumentBroker::needToUploadToStorage(),
which is called from
DocumentBroker::checkAndUploadToStorage().
A new test reproduces the issue and defends
the fix.
Change-Id: I0b2105a57cfd7049ba7b1f63e62a700fdc3744c2
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
As this is a member of the Quarantine class,
there is no need to have "Quarantine" in the
name. This was a hang-up from the time when
it was a static.
Now we can log the enabled-state.
Change-Id: Iab1cec4d90671cda175c1d320e4f3318dd7b89a1
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Let clearOldQuarantineVersions() remove quarantined
files only when necessary and per the config settings.
Change-Id: Ie1fb18c02d61a710546e9b5962ab8b7973c2066e
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
When user switches to dark theme, previously requested tiles' normalizedViewIds may need to be updated.
Issue:
Users sometimes were getting tiles from the wrong theme.
Signed-off-by: Gökay Şatır <gokaysatir@gmail.com>
Change-Id: Ie3324eb3f4879da5bfd0738513409e190422a9c0
To manage latency, we need to keep the amount of data-in-flight
manageable, this was previously done per-tile - however this is
less useful in the era of small deltas, and seems over-complicated.
Instead track processed tiles by their wire-id to save time,
space & bandwidth.
Change-Id: I1039d8d4ca96fb172278a824fe1ffd55d9fff23e
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Instead throttle rendering only based on the number of tiles on
the fly down the coolwsd <-> browser socket.
It is almost certainly better to let the Kit process sort and
prioritize rendering with a more holistic view of all rendering
requests, and to elide duplicates - rather than to stack-up some
requests in coolwsd.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I566959306815ddc2742a0fe2694df6a1371c6852