private String buildPurgeInfoString(final Instant startTime,
                                        final PurgeCounts purgeCounts) {
        return LogUtil.message("refStreamDefs purged: {}, refStreamDef purge failures: {}, " +
                               "maps deleted: {}, values deleted: {}, values de-referenced: {}. " +
                               "Time taken {}",
                purgeCounts.refStreamDefsDeletedCount,
                purgeCounts.refStreamDefsFailedCount,
                purgeCounts.refStreamPurgeCounts.mapsDeletedCount,
                purgeCounts.refStreamPurgeCounts.valuesDeletedCount,
                purgeCounts.refStreamPurgeCounts.valuesDeReferencedCount,
                Duration.between(startTime, Instant.now()));
    }
Synchronized to prevent to ensure concurrent purge jobs don't clash

@param now Allows the setting of the current time for testing purposes
stroom-pipeline/src/main/java/stroom/pipeline/refdata/store/offheapstore/RefDataOffHeapStore.java