Table of Contents | ||
---|---|---|
|
There are 5 jobs in sync service:
- PersonPlacementEmployingBodyTrustJob: Truncates and repopulates the list of connections between trainees and the employingBody trust. It writes data into the database table tcs.PersonTrust.
- PersonPlacementTrainingBodyTrustJob: Repopulates the list of connections between trainees and the trainingBody trust. It also writes into tcs.PersonTrust, and is triggered after PersonPlacementEmployingBodyTrustJob, so the data wouldn't be truncated at first.
- PostEmployingBodyTrustJob: Truncates and repopulates the list of connections between posts and the employingBody trust. It writes data into the database tcs.PostTrust.
- PostTrainingBodyTrustJob: Repopulates the list of connections between posts and the trainingBody trust. It also writes into tcs.PostTrust, and is triggered after PostTrainingBodyTrustJob, so the data wouldn't be truncated at first.
- PersonElasticSearchSyncJob: Truncates index of persons in ElasticSearch and creates a new index of persons. Then repopulates the documents of PersonViews from TCS-Service and saves these documents in ElasticSearch.
Time scheduled
...
Sequence Diagram for sync jobs:
The processing flows of PersonPlacementTrainingBodyTrustJob, PostEmployingBodyTrustJob, PostTrainingBodyTrustJob are similar to PersonPlacementEmployingBodyTrustJob, so there's no need to repeat the diagram.
Time scheduled
00:05 PersonOwnerRebuildJob
00:09 PersonPlacementEmployingBodyTrustJob
...
01:29 PersonElasticSearchSyncJob
Job Execution Order
Sequence Diagram for sync jobs:
The processing flows of PersonPlacementTrainingBodyTrustJob, PostEmployingBodyTrustJob, PostTrainingBodyTrustJob are similar to PersonPlacementEmployingBodyTrustJob, so there's no need to repeat the diagram.
01:45 PostFundingStatusSyncJob
02:00 PersonRecordStatusJob
If the container is restarted in a pre-defined time range (00:00:00+00:00 to 07:00:00+00:00) then the jobs are run sequentially.
Note: All the time are here in UTC
Run jobs out of schedule
Instructions taken from Refresh Elasticsearch cache page.Where possible; it is easiest to use the web interface at the root of the application (https://<host IP/domain name here>/sync/.).
DEPRECATED:
If a job needs to be run manually, e.g. after a database has been re-imported to stagefrom the server, the instructions taken from Refresh Elasticsearch cache page can be used:
- Copy the commands below into your favorite text editor.
- Replace the
$bean_name
and$job_method
with the ones for the job you are re-running. - ssh into either the blue or green server and paste the modified commands in a single chunk and it will go through the process of:
- downloading the JDK and the JMX client
- copy them to the container
- extract the compressed JDK
- launch the JMX client and
- restart the sync job.
...
cd /tmp mkdir javatools cd javatools wget https://heetisrequiredapps.blob.core.windows.net/javafiles/jmxterm-1.0.0-uber.jar wget https://heetisrequiredapps.blob.core.windows.net/javafiles/jdk-8-linux-x64.tar.gz cd .. docker cp javatools sync_sync_1:/tmp docker exec -it sync_sync_1 /bin/bash cd /tmp/javatools tar -zxvf jdk-8-linux-x64.tar.gz rm jdk-8-linux-x64.tar.gz ./jdk1.8.0_202/bin/java -jar jmxterm-1.0.0-uber.jar open 1 domain sync.mbean bean sync.mbean:name=$bean_name run $job_method run isCurrentlyRunning exit |
---|
When your you're back at the bash-4.4# prompt you can run the following command to keep an eye on the progress of the sync.
tail /var/log/apps/sync.log -f |
---|
Summary of what to run:
Failed/Out-of-date Job | Managed Bean Name | Method Name | Things that need to be done after this has been started |
---|---|---|---|
PersonPlacementEmployingBodyTrustJob | PersonPlacementEmployingBodyJob | doPersonPlacementEmployingBodyFullSync | Re-run PersonPlacementTrainingBodyTrustJob and PersonElasticSearchSyncJob |
PersonPlacementTrainingBodyTrustJob | PersonPlacementTrainingBodyTrustJob | PersonPlacementTrainingBodyFullSync | PersonElasticSearchSyncJob (assuming only this failed) |
PostEmployingBodyTrustJob | PostEmployingBodyTrustJob | PostEmployingBodyTrustFullSync | Re-run PostTrainingBodyTrustJob |
PostTrainingBodyTrustJob | PostTrainingBodyTrustJob | PostTrainingBodyTrustFullSync | none (assuming only this failed) |
PersonElasticSearchSyncJob | PersonElasticSearchJob | personElasticSearchSync | none