No description
Find a file
Ashod Nakashian d6259d6a54 wsd: support parallel systemplate setup
When tests are run in parallel, they will all
compete to update and set up the systemplate
directory, which has a handful of files that
need to be up-to-date. This is a source of errors.

Normally, these files are linked (hard- or soft-
link, whichever succeeds). With linking, we
only need to worry about the initial setup,
as the files will never be out-of-date from
then on. However, when linking fails, we need
to copy the files, and update them (by copying
over fresh versions of the files, if necessary)
every time a new kit is forked. Copying over
is tricky, as it's not atomic. To make it
atomic, we copy the files to the destination
directory under a temporary (random) name,
and then rename to the final name (which is
atomic, including replacing the target file,
if it exists).

No such race exists in production, where there
is (or should be) but one instance of loolwsd
(which does the initial setup) and forkit
(which updates systemplate before forking
new kit instances).
This is an issue with parallel tests only.

Change-Id: I6ba1514d00a84da7397d28efeb6378619711d52f
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97785
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-07 19:05:23 +02:00
android android: Always re-do the fonts.conf, to update when the filter changed. 2020-07-03 16:33:38 +02:00
common wsd: support parallel systemplate setup 2020-07-07 19:05:23 +02:00
cypress_test Add find & replace dialog in menu 2020-07-06 14:13:47 +02:00
debian systemplate files are not writable by lool user 2020-07-05 13:28:28 +02:00
docker wsd: faster jail setup via bind-mount 2020-07-01 05:42:43 +02:00
etc
fuzzer libfuzzer: fix build 2020-06-03 16:39:45 +02:00
gtk wsd: cleanup realpath call 2020-07-06 13:54:54 +02:00
ios Use a separate temp directory for each document during the iOS app lifetime 2020-07-07 16:01:19 +02:00
kit wsd: cleanup realpath call 2020-07-06 13:54:54 +02:00
kubernetes/helm
loleaflet android: fix thumbnails images when portrait orientation is set 2020-07-07 17:29:32 +02:00
man Proof: add loolwsd-generate-proof-key helper script 2020-04-23 19:36:06 +02:00
net There should be no need to notify when fakeSocketRead() completes 2020-07-07 15:57:24 +02:00
scripts Add more source files to scripts/unocommands.py 2020-06-24 09:08:25 +02:00
test Fix lool user control issue on packaging 2020-07-06 10:41:14 +02:00
tools systemplate files are not writable by lool user 2020-07-05 13:28:28 +02:00
wsd Improve reporting save results 2020-07-07 15:06:25 +02:00
.clang-format
.clang-tidy
.gitignore gitignore added loleaflet/typescript_js 2020-07-03 19:47:10 +02:00
.gitreview
AUTHORS
autogen.sh typo 2020-05-20 22:31:19 +02:00
browsersync-config.js
ChangeLog
configure.ac default product name: LibreOffice Online Personal 2020-07-05 13:29:38 +02:00
COPYING
discovery.xml existing integrations prefer text/rtf 2020-06-26 10:59:12 +02:00
favicon.ico
INSTALL Start writing something serious in the INSTALL file 2020-05-05 22:24:45 +02:00
logerrit typo fixes in comments and code 2020-04-26 23:19:52 +02:00
loolkitconfig-mobile.xcu Disable Help button on dialogs in mobile apps 2020-03-23 21:16:40 +01:00
loolkitconfig.xcu
loolwsd-generate-proof-key Proof: fixed a typo, and handled the case when the script is running from rootless docker 2020-04-24 20:04:33 +02:00
loolwsd-systemplate-setup wsd: support parallel systemplate setup 2020-07-07 19:05:23 +02:00
loolwsd.init.rhel6
loolwsd.service service: enable sandboxing options 2020-06-25 10:58:23 +02:00
loolwsd.spec.in wsd: faster jail setup via bind-mount 2020-07-01 05:42:43 +02:00
loolwsd.xml.in wsd: faster jail setup via bind-mount 2020-07-01 05:42:43 +02:00
Makefile.am make: don't clean compile_commands.json 2020-07-06 13:47:27 +02:00
NEWS
PROBLEMS
README Mention test folders in the top-level README. 2020-05-27 15:36:14 +02:00
sysconfig.loolwsd Add LOKit logging option to configuration file 2020-06-15 16:06:37 +02:00

LibreOffice Online.

This project has several components:

wsd/
	The Web Services Daemon - which accepts external connections.

kit/
	The client which lives in its own chroot and renders documents.

common/
	Shared code between these processes.

loleaflet/
	The client side JavaScript component.

test/
	C++ based unit tests.

cypress_test/
	JavaScript based integration tests.

It is recommended to read these files:

	wsd/README
	loleaflet/README

Enjoy.