Full project history migration
The3.5.x release of the Community Edition includes the Full Project History feature that is already available in our SaaS offering, overleaf.com
After upgrading your instance to Overleaf CE 3.5.13, all new projects will be using Full Project History by default. Existing projects will continue using the legacy History system, until they’re migrated.
If you upgrade to
3.5.13 and decide to downgrade to an earlier version, then you should restore from a full system backup. The history of projects created in 3.5.13 is not compatible with earlier versions of Overleaf CE.- It tracks changes in binary files, which is unsupported in the legacy system.
- There is support for labelled versions.
- The system is in general more robust, there is less chance of data loss.
Migrating existing projects
1
Create a backup
Create a full backup of your instance with a consistent snapshot of the mongo, redis and sharelatex directories.
2
Update
Update the version of sharelatex/sharelatex image to 3.5.13.Toolkit: Use the
$ bin/upgrade script for upgrading the toolkit to the latest version and edit config/version to 3.5.13.3
Start the instance
Ideally, you’d want to prevent users from accessing your instance while the migration takes place, to avoid data loss in case you need to restore your backup. See Offline migration for more information on how to do this.
4
Wait until all services are up and running
Wait until all services are up and running (see command below)
5
Run the migration script
--force-clean clears partially migrated project history data in the new system, this allows retrying the migration for individual projects that failed in prior attempts;--fix-invalid-characters replaces non printable characters that are not supported by the new history system;--convert-large-docs-to-file converts documents that are above the 2MB editable-size threshold to a non-editable file)The output should look like this:0, and the last lines indicating no failures:6
Reopen the site
If you had chosen to perform an offline migration then you will need to re-open the site. If you are still logged in you will need to:
- Click on the Admin button and choose Manage Site
- Click the Open/Close Editor tab
- Click the Reopen Editor button
$ bin/up.Offline migration
To prevent users from being able to log in while the history migration script is running, please follow these steps:- Log into your Overleaf instance with an admin account
- Click on the Admin button and choose Manage Site
- Click the Open/Close Editor tab
- Click on the Close Editor button
- Click on the Disconnect all users button
Online migration
It is possible to run the migration scripts while the application is still running. There are a few considerations to take into account:- The migration process is CPU intensive, you should monitor resource usage while the script is running.
- With a high
--concurrencyvalue, the event loop in some services (track-changesin particular) might experience some blocking, which would lead to a degraded UX experience. We recommend starting with the default--concurrency=1value. - You can stop the script at any time. Starting it again will resume the migration when you left it. This is useful in case you prefer to run the migration in less busy hours (e.g. at night).
db.projects.count()). If the number of projects is large you can run the script and monitor its progress, then decide whether to continue running it online or offline based on your particular case.
Clean up legacy history data
A script to cleanup legacy history data was added in Server Pro3.5.6, 4.0.6 and 4.1.0.
In Server Pro before version 3.5.13, the script deletes the content of
docHistory and docHistoryIndex collections. MongoDB does not release disk space after you delete documents, instead, it will reuse that space for future documents in the same collection. Nothing will write to these collections again after the history migration, so the disk space will remain unused.If you want to make the disk space available again you can upgrade to Server Pro 3.5.13 (when still using the 3.x release) or Server Pro 4.2.5 (when using the 4.x release) and re-run the cleanup script.The cleanup script as included in Server Pro the latest patch releases of 3.5.x and latest 4.x.x are dropping the collections as the final step.It is safe to re-run the cleanup script.Troubleshooting
We will add troubleshooting advice here. Please note that while we normally offer support only to Server Pro customers, given the nature of this migration, we will also do our best to support CE customers who experience problems specific to the full project history migration. If the full project history migration script fails (i.e. exits with an error or prints a non-zero number of failed projects), please send the following details to our support team by email support+historymigration@overleaf.com, detailing: Subject: Full project history migration problem- Instance Type: CE or Server Pro (delete as appropriate)
- Installation Type: Overleaf toolkit or
docker-compose.ymlor other (delete as appropriate) - Version: 3.5.x (toolkit:
$ cat config/version) - Migration script output (which should be located in the container under
/overleaf/services/web) - Migrated Projects: (as per migration script output)
- Total Projects: (as per migration script output)
- Remaining Projects: (as per migration script output)
- Duration of the migration:
bin/doctoroutput (when using toolkit)- Toolkit version:
$ git rev-parse HEAD(when using Toolkit)
history-v1, project-history and track-changes services to the email. You can find these at /var/log/sharelatex inside the sharelatex container and export them like this:
Finding broken file trees
The migration may fail for projects which have a malformed file tree (for example, where filenames are empty). You can find a list of these problems using thefind_malformed_filetrees script which checks all projects in the database:
fix_malformed_filetree script, running the command once for each bad path:
Downgrading projects from full project history to legacy history
If there is a project that has been migrated to full project history but you want to go back to the legacy history, use thedowngrade_project script as follows:

