Serialized Form
-
Package org.exoplatform.addons.documents.cleanup.entity
-
Class org.exoplatform.addons.documents.cleanup.entity.CleanupCampaignEntity
class CleanupCampaignEntity extends Object implements Serializable- serialVersionUID:
- 4728820912354523L
-
Serialized Fields
-
archiveFileId
Long archiveFileId
-
checkpointOffset
long checkpointOffset
-
checkpointPath
String checkpointPath
-
completedDate
Date completedDate
-
etaSeconds
long etaSeconds
-
excludedPaths
String excludedPaths
-
graceDays
int graceDays
-
id
Long id
-
lockDate
Date lockDate
-
maxVersionsPerFile
int maxVersionsPerFile
-
minFileSizeBytes
long minFileSizeBytes
-
name
String name
-
periodMonths
int periodMonths
-
processedCount
long processedCount
-
publishedDate
Date publishedDate
-
scanThreads
int scanThreads
Reader threads this campaign's scan may use. 0 means 'never set', i.e. use the platform default — the column is added with that default, so every campaign predating it keeps the behaviour it ran with. -
startedDate
Date startedDate
-
state
String state
-
summaryJson
String summaryJson
-
totalCount
long totalCount
-
-
Class org.exoplatform.addons.documents.cleanup.entity.CleanupCampaignItemEntity
class CleanupCampaignItemEntity extends Object implements Serializable- serialVersionUID:
- 87351249172354529L
-
Serialized Fields
-
action
String action
-
attemptCount
long attemptCount
Purge attempts already spent on this item, incremented by every retry. -
campaignId
long campaignId
-
computedAt
Date computedAt
-
createdDate
Date createdDate
Creation date of the candidate file, as read by the scan. Persisted although only the last-modified one is displayed: BOTH dates being older than the campaign period is what made the file a candidate, so a report carrying only one of them cannot explain its own rows. Nullable, see above. -
decidedAt
Date decidedAt
-
decidedBy
String decidedBy
-
failureDetail
String failureDetail
Compact diagnostic of the failure (head + root exception, seeCleanupThrowableUtil), mapped as a plain String over the FAILURE_DETAIL CLOB column — the platform precedent for a CLOB is a bare@ColumnString, no@Loband no columnDefinition (cf.io.meeds.social.space.template.entity.SpaceTemplateEntity). -
failureReason
String failureReason
Localizable message code of the failure, and NOTHING else: the console looks it up in an i18n bundle and the grouped-failures aggregate groups on it, so it must never carry an exception message. -
fileSize
long fileSize
-
id
Long id
-
lastModifiedDate
Date lastModifiedDate
Last modification date of the candidate file, as read by the scan. Nullable: rows recorded before this column existed keep a NULL, and so does a file whose date was unreadable. -
nodeUuid
String nodeUuid
-
ownerIdentityId
long ownerIdentityId
-
path
String path
-
purgedAt
Date purgedAt
-
reclaimableBytes
long reclaimableBytes
What this item's OWN action frees:fileSize + versionsSizefor a DELETE,versionsSizealone for a PURGE_VERSIONS.DERIVED, and persisted anyway — the one deliberate denormalization of this schema. It was a JPQL
CASEexpression, which no index can serve: the purge consumes its candidates biggest first, and sorting on an expression made every batch a filesort over the campaign's remaining rows (measured at 318 ms against 4 ms per batch on 200k rows, and the batch count is in the tens of thousands). Stored, it lets ONE index serve both the keyset predicate and its order.It cannot drift: every entity reaching the database is built by
CleanupCampaignStorage#toEntity, which recomputes this fromCleanupSizeUtil— still the single DEFINITION — on every save. This column is the single READ, replacing the CASE that the Java comparator used to mirror. -
reclaimedBytes
long reclaimedBytes
-
state
String state
-
versionsSize
long versionsSize
Version bytes this item's ACTION reclaims — the whole version history for a DELETE, the removal set for a PURGE_VERSIONS. Action-dependent by design, seeCleanupCampaignItemDAO.RECLAIMABLE_BYTES.
-
-
Class org.exoplatform.addons.documents.cleanup.entity.CleanupScanUnitEntity
class CleanupScanUnitEntity extends Object implements Serializable- serialVersionUID:
- 41827365109283741L
-
Serialized Fields
-
attemptCount
long attemptCount
Walk attempts already spent on this unit, incremented when the coordinator CLAIMS it for a walk. A unit that spent them all is settled-failed: it stops being re-walked and stops holding the dry-run's completion back. -
campaignId
long campaignId
-
evalFailureCount
long evalFailureCount
Nodes of this subtree the scan walked but could not EVALUATE. Distinct fromCleanupScanUnitEntity.failureReason, which is about the subtree itself failing: this counts files silently missing from the report of a unit that finished DONE. -
evalFailureDetail
String evalFailureDetail
-
evalFailureReason
String evalFailureReason
Short label of the FIRST such failure — kept, later ones only counted. -
failureReason
String failureReason
Localizable message code of the unit failure, and NOTHING else — same contract as the campaign item's, the console looks it up in an i18n bundle. -
id
Long id
-
lastScannedPath
String lastScannedPath
Path of the last node scanned in this unit — the ONLY positioning information of a resume, per unit instead of per campaign. NULL while the unit was never started. -
scannedCount
long scannedCount
Nodes scanned in this unit so far: progress/ETA display only. -
state
String state
-
totalCount
Long totalCount
Nodes counted in this unit by the estimation phase, NULL while never counted. The campaign denominator is the SUM over the units, so it stays comparable with the counts of the campaigns scanned by the sequential worker.A boxed
Longand not along, which is the whole point: 0 is a legitimate COUNT — an empty first-letter bucket of /Users — and with a primitive it was indistinguishable from 'not counted yet', so every resume re-counted every empty bucket for nothing. -
unitPath
String unitPath
Absolute JCR path of the partition walked by ONE reader thread. Unique per campaign (UK_DOC_CLEANUP_SCAN_UNIT_PATH): that constraint is what makes unit planning idempotent across resumes, exactly as the campaign+nodeUuid one makes candidate saving idempotent. -
unitPathHash
String unitPathHash
SHA-256 hex ofCleanupScanUnitEntity.unitPath, persisted for ONE purpose: being the unique key. The constraint cannot be keyed on the path itself — on MySQL the table'sCHARSET=UTF8makes anNVARCHAR(2000)key 6008 bytes against InnoDB's 3072-byte ceiling, so the changeset fails at DDL time and the addon does not deploy at all. The path stays as the unindexed readable column.
-
-