Replication Application
Allow replicating pages and other data between different XWiki instances |
Type | XAR |
Category | Application |
Developed by | |
Active Installs | 2 |
Rating | |
License | GNU Lesser General Public License 2.1 |
Table of contents
- Description
- Linking instances
- Page replication
- Implement a new type of replication
- Limitations
- Generic architecture
- Prerequisites & Installation Instructions
- Release Notes
- v2.1.2
- v1.12.13
- v2.1.1
- v2.1.0
- v2.0.0
- v1.12.12
- v1.12.11
- v1.12.10
- v1.12.9
- v1.12.8
- v1.12.7
- v1.12.6
- v1.12.5
- v1.12.4
- v1.12.3
- v1.12.2
- v1.12.1
- v1.12.0
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.0
- v1.5.0
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- v0.13.1
- v0.13
- v0.12
- v0.11.1
- v0.11
- v0.10
- v0.9
- v0.8
- v0.7
- v0.6
- v0.5
- v0.4
- v0.3
- v0.2
- v0.1
- Dependencies
Description
The aim of this project is to make easy to share data between different XWiki instances and also expose as a demonstration the replication of wiki pages.
You can contribute translations for this application on https://l10n.xwiki.org/projects/xwiki-contrib/application-replication-default/.
Linking instances
Communication between instances is done through the HTTP protocol, and the first thing to do before replicating any data is to tell each instance how to access the other(s). The linking is done in the main wiki administration -> Other -> Replication.
An instance will start by requesting another one using the URL leading to XWiki (for example https://mydomain.com/xwiki). This will make the current instance appear in the target instance administration as a "Requesting instance" which can then be accepted (or declined).
Linked instances also exchange keys to verify signed messages to make sure that the message really is sent by the instance it's claiming to come from.
Page replication
The main use case covered by the application is Page Replication.
Implement a new type of replication
The replication framework distribute "replication messages". Those messages are composed of the following:
- a unique identifier
- the date/time at which it was created
- the instance which is the initial source of the message
- a message type associated with the data
- custom binary data
- custom map of metadata
There are two main entry points for custom replication implementations:
- org.xwiki.contrib.replication.ReplicationSender: this component allows sending messages to specific (or all) registered instances
- org.xwiki.contrib.replication.ReplicationReceiver: a component role to implement in order to receive all messages associated with the message type indicate as component hint
Limitations
Notifications replication
Notifications and notification preferences are not directly replicated currently.
But there are cases where you will get the same notifications on all instances (they are not technically replicated, but all instances appear to have created the same notifications on their own). In general, the instance in which a document is replicated behave as if the page was saved locally (except rare cases like, of course, not replicating back a page that was just received) so any page creation/modification/deleting which produce a notification locally will produce the same notification in the other instances too (provided the conditions are the same).
Here are such examples for page related notifications:
- pages you explicitly follow on several instances: notifications preferences control for which page you want to receive notifications, so you will get notifications if an instance has preferences indicating that you follow a given page even if that page came from a replication message
- auto watch: by default you automatically follow a page on which you made a major modification and same as for the previous point this will produce notifications preferences for a page exactly as if it was saved locally
Subwiki
It's possible to install the replication extension in subwiki but with important limitations: it's only possible to chose the replication instances from the main wiki administration. Moreover, the replication instance where to replicate the pages should have a subwiki with the exact same name for the replication to work properly.
Generic architecture
See Architecture.
Prerequisites & Installation Instructions
We recommend using the Extension Manager to install this extension (Make sure that the text "Installable with the Extension Manager" is displayed at the top right location on this page to know if this extension can be installed with the Extension Manager). Note that installing Extensions when being offline is currently not supported and you'd need to use some complex manual method.
You can also use the following manual method, which is useful if this extension cannot be installed with the Extension Manager or if you're using an old version of XWiki that doesn't have the Extension Manager:
- Log in the wiki with a user having Administration rights
- Go to the Administration page and select the Import category
- Follow the on-screen instructions to upload the downloaded XAR
- Click on the uploaded XAR and follow the instructions
- You'll also need to install all dependent Extensions that are not already installed in your wiki
Release Notes
v2.1.2
v1.12.13
v2.1.1
The following translations have been updated with this release:
v2.1.0
v2.0.0
The user interface, the behavior of the standard replication in general or the format of the metadata did not really change much. The main reason for the increment of the major version is the fact that the API has been completely re-written, because it was starting to be both too complex and too limited for custom needs. Also, this version now requires XWiki 14.10 or more.
Main new features for developers includes:
- a new filtering system for received messages, allowing to reject or convert them "on the fly"
- a new question/answer system between instances
- the controller can decide a lot more than it used to, but it also has less to implement for many use cases which are now generic code based on the replication configuration provided by the controller
A few administration helpers have been added:
- it's possible to remove messages waiting to be sent (which means they will be lost)
It also includes various bugfixes which are not fixed in the 1.12.x branch (which is now abandoned, unless a recent blocker regression would be reported), so it's recommended to move to it.
v1.12.12
v1.12.11
v1.12.10
v1.12.9
v1.12.8
v1.12.7
v1.12.6
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.12.0
The following translations have been updated with this release:
v1.11.0
The following translations have been updated with this release:
v1.10.0
v1.9.0
v1.8.0
The following translations have been updated with this release:
v1.7.0
v1.6.0
v1.5.0
v1.4.5
v1.4.4
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.3.1
The following translations have been updated with this release:
v1.3.0
v1.2.0
v1.1.2
v1.1.1
v1.1.0
v1.0.0
v0.13.1
v0.13
v0.12
v0.11.1
v0.11
v0.10
v0.9
v0.8
v0.7
v0.6
v0.5
v0.4
v0.3
v0.2
v0.1
Dependencies
Dependencies for this extension (org.xwiki.contrib.replication:replication-ui 2.1.2):
- org.xwiki.contrib.replication:replication-default 2.1.2
- org.xwiki.contrib.replication:replication-entity-default 2.1.2
- org.xwiki.contrib.replication:replication-entity-controller 2.1.2
- org.xwiki.platform:xwiki-platform-rendering-macro-velocity 14.10.7
- org.xwiki.platform:xwiki-platform-display-macro 14.10.7
- org.xwiki.rendering:xwiki-rendering-macro-html 14.10.7
- org.xwiki.platform:xwiki-platform-component-script 14.10.7
- org.xwiki.platform:xwiki-platform-administration-ui 14.10.7