Repository: aurora Updated Branches: refs/heads/master 220e23b6e -> 8e37d0f18
Add finer grained timings to the Snapshot process. I also added some log output, as I found those existing numbers handy when investigating our long snapshot times. Related ticket: https://issues.apache.org/jira/browse/AURORA-1861 Reviewed at https://reviews.apache.org/r/54773/ Project: http://git-wip-us.apache.org/repos/asf/aurora/repo Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/8e37d0f1 Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/8e37d0f1 Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/8e37d0f1 Branch: refs/heads/master Commit: 8e37d0f181b7a1a4b3fd8c0ca11f6405991ce560 Parents: 220e23b Author: David McLaughlin <[email protected]> Authored: Thu Dec 15 10:08:54 2016 -0800 Committer: David McLaughlin <[email protected]> Committed: Thu Dec 15 10:08:54 2016 -0800 ---------------------------------------------------------------------- .../aurora/scheduler/storage/log/LogStorage.java | 3 ++- .../scheduler/storage/log/SnapshotStoreImpl.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aurora/blob/8e37d0f1/src/main/java/org/apache/aurora/scheduler/storage/log/LogStorage.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/aurora/scheduler/storage/log/LogStorage.java b/src/main/java/org/apache/aurora/scheduler/storage/log/LogStorage.java index 39924c6..9c9218c 100644 --- a/src/main/java/org/apache/aurora/scheduler/storage/log/LogStorage.java +++ b/src/main/java/org/apache/aurora/scheduler/storage/log/LogStorage.java @@ -495,7 +495,8 @@ public class LogStorage implements NonVolatileStorage, DistributedSnapshotStore + ", cron jobs: " + snapshot.getCronJobsSize() + ", locks: " + snapshot.getLocksSize() + ", quota confs: " + snapshot.getQuotaConfigurationsSize() - + ", tasks: " + snapshot.getTasksSize()); + + ", tasks: " + snapshot.getTasksSize() + + ", updates: " + snapshot.getJobUpdateDetailsSize()); }); } http://git-wip-us.apache.org/repos/asf/aurora/blob/8e37d0f1/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java b/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java index d2c8590..853780b 100644 --- a/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java +++ b/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java @@ -105,6 +105,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { // moment a new snapshot is created new SnapshotField() { @Override + @Timed("snapshot_save_db") public void saveToSnapshot(MutableStoreProvider store, Snapshot snapshot) { LOG.info("Saving dbsnapshot"); // Note: we don't use mybatis mapped statements for performance reasons and to avoid @@ -126,6 +127,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { } @Override + @Timed("snapshot_restore_db") public void restoreFromSnapshot(MutableStoreProvider store, Snapshot snapshot) { if (snapshot.isSetDbScript()) { try (Connection c = ((DataSource) store.getUnsafeStoreAccess()).getConnection()) { @@ -159,11 +161,13 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { // It's important for locks to be replayed first, since there are relations that expect // references to be valid on insertion. @Override + @Timed("snapshot_save_lock_store") public void saveToSnapshot(MutableStoreProvider store, Snapshot snapshot) { snapshot.setLocks(ILock.toBuildersSet(store.getLockStore().fetchLocks())); } @Override + @Timed("snapshot_restore_lock_store") public void restoreFromSnapshot(MutableStoreProvider store, Snapshot snapshot) { if (hasDbSnapshot(snapshot)) { LOG.info("Deferring lock restore to dbsnapshot"); @@ -181,12 +185,14 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { }, new SnapshotField() { @Override + @Timed("snapshot_save_host_attributes") public void saveToSnapshot(MutableStoreProvider store, Snapshot snapshot) { snapshot.setHostAttributes( IHostAttributes.toBuildersSet(store.getAttributeStore().getHostAttributes())); } @Override + @Timed("snapshot_restore_host_attributes") public void restoreFromSnapshot(MutableStoreProvider store, Snapshot snapshot) { if (hasDbSnapshot(snapshot)) { LOG.info("Deferring attribute restore to dbsnapshot"); @@ -204,6 +210,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { }, new SnapshotField() { @Override + @Timed("snapshot_save_task_store") public void saveToSnapshot(MutableStoreProvider store, Snapshot snapshot) { snapshot.setTasks( IScheduledTask.toBuildersSet(store.getTaskStore().fetchTasks(Query.unscoped()))); @@ -211,6 +218,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { } @Override + @Timed("snapshot_restore_task_store") public void restoreFromSnapshot(MutableStoreProvider store, Snapshot snapshot) { if (hasDbTaskStore(snapshot)) { LOG.info("Deferring task restore to dbsnapshot"); @@ -227,6 +235,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { }, new SnapshotField() { @Override + @Timed("snapshot_save_cron_store") public void saveToSnapshot(MutableStoreProvider store, Snapshot snapshot) { ImmutableSet.Builder<StoredCronJob> jobs = ImmutableSet.builder(); @@ -238,6 +247,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { } @Override + @Timed("snapshot_restore_cron_store") public void restoreFromSnapshot(MutableStoreProvider store, Snapshot snapshot) { if (hasDbTaskStore(snapshot)) { LOG.info("Deferring cron job restore to dbsnapshot"); @@ -278,6 +288,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { }, new SnapshotField() { @Override + @Timed("snapshot_save_quota_store") public void saveToSnapshot(MutableStoreProvider store, Snapshot snapshot) { ImmutableSet.Builder<QuotaConfiguration> quotas = ImmutableSet.builder(); for (Map.Entry<String, IResourceAggregate> entry @@ -290,6 +301,7 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { } @Override + @Timed("snapshot_restore_quota_store") public void restoreFromSnapshot(MutableStoreProvider store, Snapshot snapshot) { if (hasDbSnapshot(snapshot)) { LOG.info("Deferring quota restore to dbsnapshot"); @@ -308,11 +320,13 @@ public class SnapshotStoreImpl implements SnapshotStore<Snapshot> { }, new SnapshotField() { @Override + @Timed("snapshot_save_update_store") public void saveToSnapshot(MutableStoreProvider store, Snapshot snapshot) { snapshot.setJobUpdateDetails(store.getJobUpdateStore().fetchAllJobUpdateDetails()); } @Override + @Timed("snapshot_restore_update_store") public void restoreFromSnapshot(MutableStoreProvider store, Snapshot snapshot) { if (hasDbSnapshot(snapshot)) { LOG.info("Deferring job update restore to dbsnapshot");
