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
00:09 PersonPlacementEmployingBodyTrustJob
00:29 PersonPlacementTrainingBodyTrustJob
01:09 PostEmployingBodyTrustJob
01:19 PostTrainingBodyTrustJob
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.
Run jobs out of schedule
Instructions taken from Refresh Elasticsearch cache page.
If a job needs to be run manually, e.g. after a database has been re-imported to stage:
- 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 orgreen 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.
N.B. Refer to the "Job Execution Order" above to see whether there is an appending Job which needs to be run afterward.
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 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 |
Add Comment