-
Type:
Suggestion
-
Resolution: Unresolved
-
None
-
Component/s: Site - Backup / Import, Space - Export / Import
-
None
-
1
-
5
During space/site backup/restore Confluence could skip some records for various reasons. For e.g. record could be invalid, it's dependencies couldn't be resolved or attachment file couldn't be found. This information about skipped records is added to the atlassian-confluence.log file. When process finishes users could see in UI how many records were skipped. If user wants to check what exactly was skipped and whether they are OK with the fact that records aren't included in backup or not restored, they will need to search through the whole confluence log file to be able to find what exactly was skipped.
I suggest to consider introducing additional place where this information could be stored, so user could access it without going through all logs. For e.g. it could be:
a) Additional file related to the job (will be deleted after 2 weeks together with the job)
b) Backup/Restore service will create Confluence page which will be mentioned in job. When job is deleted this page could also be removed (we will need to have a special space for such pages)
Example log messages:
| Class | Level | Category | Example Log Message |
|---|---|---|---|
| StatisticsCollector | WARN | Restore / Counted | Restore process skipped 15 objects. To mute the full list of skipped objects, change logging to WARN for class com.atlassian.confluence.impl.backuprestore.statistics.StatisticsCollector |
| StatisticsCollector | INFO | Restore / Counted | {{Object was skipped with a reason INVALID_FIELDS and message: Value cannot be null. Object: ImportedObjectV2{id=98765, entityClass=class com.atlassian.confluence.pages.Page, originalPropertyValueMap=
Unknown macro: {title=null, ...}
}}} |
| StatisticsCollector | INFO | Restore / Counted | {{Object was skipped with a reason PARENT_WAS_NOT_PERSISTED: ImportedObjectV2{id=98765, entityClass=class com.atlassian.confluence.pages.Comment, originalPropertyValueMap=
Unknown macro: {...}
}}} |
| StatisticsCollector | INFO | Restore / Counted | {{Object was skipped with a reason NOT_SATISFIED_DEPENDENCIES: ImportedObjectV2{id=98765, entityClass=class com.atlassian.confluence.pages.Attachment, originalPropertyValueMap=
Unknown macro: {...}
}}} |
| StatisticsCollector | INFO | Restore / Counted | {{Object was skipped with a reason SPACE_IS_NOT_ALLOWED: ImportedObjectV2{id=98765, entityClass=class com.atlassian.confluence.spaces.Space, originalPropertyValueMap=
Unknown macro: {...}
}}} |
| StatisticsCollector | INFO | Restore / Counted | {{Object was skipped with a reason PARENT_NO_LONGER_EXISTS: ImportedObjectV2{id=98765, entityClass=class com.atlassian.confluence.core.ContentProperty, originalPropertyValueMap=
Unknown macro: {...}
}}} |
| DatabasePersister | WARN | Restore / Counted | {{Object has an empty obligatory field and will be skipped. Field: HibernateField
{propertyName='title', nullable=false}
, Object: ImportedObjectV2 {id=98765, entityClass=class com.atlassian.confluence.pages.Page, ...}}} |
| BodyContentPersister | WARN | Restore / Counted | BodyContentPersister detected invalid BodyContent(s) during import which were ignored. |
| BodyContentPersister | DEBUG | Restore / Counted | Skipped BodyContent 98765 due to Failed to extract body from BodyContent |
| ContentPropertiesPersister | WARN | Restore / Counted | ContentPropertiesPersister detected invalid contentProperties during import which were ignored. |
| DirectoryMappingPersister | WARN | Restore / Counted | Couldn't resolve listIndex property value for directory mapping with id 98765 |
| InternalUserCredentialRecordPersister | WARN | Restore / Counted | Couldn't resolve listIndex property value for internal user credential record with id 98765 |
| HibernateEntityExistenceFilter | INFO | Restore / Counted | An object with class com.atlassian.confluence.spaces.SpaceGroup found in the input XML backup file is not known by Hibernate and will be skipped. It usually happens when the class was deprecated in previous Confluence versions. All the following objects of the same class will be skipped silently. |
| ClassShouldBeExportableFilter | INFO | Restore / Counted | An object with class com.atlassian.confluence.some.OldClass found in the input XML backup file marked as NotExportable and will be skipped. It usually happens when a class was NOT marked as NotExportable in previous Confluence versions. All the following objects of the same class will be skipped silently. |
| ImportedObjectV2 | WARN | Restore / Counted | Unexpected imported property 'legacyField' will be skipped. Entity class 'com.atlassian.confluence.pages.Page', id '98765'. (property skipped, not the whole object) |
| ImportedObjectV1ToV2Converter | ERROR | Restore / Counted | {{fromLegacyImportedObject failed, the object will be skipped: ImportedObject
{class='Page', id='98765', ...}
}} |
| InvalidBandanaRecordFilter | DEBUG | Restore / Counted | {{Imported Bandana record was skipped because either context or key field are nulls ImportedObjectV2
{id=98765, entityClass=class com.atlassian.confluence.setup.bandana.ConfluenceBandanaRecord, ...}
}} |
| XMLBackupContainerReader | DEBUG | Restore / Counted | {{This input object has been skipped because it had been rejected by the converter. Object: ImportedObject
{class='SomeClass', id='98765', ...}
}} |
| AttachmentsPersister | WARN | Restore / Not counted | Cannot restore the attachment with id 98765. No entry in the zip file. Looked in attachments/11111/22222/1 |
| AttachmentsPersister | WARN | Restore / Not counted | Cannot find in database an attachment with restored id 98765 |
| AttachmentsPersister | WARN | Restore / Not counted | Cannot restore the attachment. Failed to read the stream for entry attachments/11111/22222/1. |
| RestoreDao | WARN | Restore / Not counted | Unable to persist batch of records. Records will be inserted one by one: Duplicate entry '98765' for key 'PRIMARY' |
| RestoreDao | WARN | Restore / Not counted | Record was not persisted to the database: could not execute statement; SQL [n/a]; constraint [PRIMARY] |
| ImportedObjectsDispatcher | WARN | Restore / Not counted | No persisters found for the entity with class class com.atlassian.confluence.some.LegacyEntity |
| EntityInfoSqlHelper | WARN | Restore / Not counted | Unable to parse value, null value will be used instead. Type: TimestampType, value: 2024-13-45. Exception: java.text.ParseException: Unparseable date |
| EntityInfoSqlHelper | WARN | Restore / Not counted | Unexpected type came for parsing. Null value will be used instead. Type: SomeUnknownType, value: someValue |
| EntityInfoSqlHelper | WARN | Restore / Not counted | Unexpected Component property type came for parsing. Null value will be used instead. Type: ComponentType, value: someValue |
| DeferredUpdateRecordAction | WARN | Restore / Not counted | Unable to find new id for entity class class com.atlassian.confluence.spaces.Space with original id 98765. It was not found or persisted for some reasons? |
| DeferredUpdateRecordAction | WARN | Restore / Not counted | Unable to perform update operation for entity class class com.atlassian.confluence.spaces.Space with original id 98765. The new id 11111 is found but the entity was not persisted by this moment. |
| BodyContentPersister | WARN | Restore / Not counted | Unable to find user 'abc123def456' mentioned in the body content with id '98765'. |
| BodyContentPersister | WARN | Restore / Not counted | Failed to extract user references from BodyContent with id 98765 |
| ClassExistenceValidator | INFO | Restore / Not counted | Unable to instantiate 'com.atlassian.confluence.some.RemovedClass' class found in the input XML backup file. It usually happens when a class was deprecated and then removed from Confluence. All following objects of the same class will be skipped silently. |
| LabelFinder | WARN | Restore / Not counted | We found two or more similar labels. Space restore will use label with lower id (98765). Please consider removing other labels with the same name, owner and namespace |
| PluginDataReader | WARN | Restore / Not counted | No plugin data found for module descriptor: com.example.plugin:my-module |
| PluginDataReader | INFO | Restore / Not counted | Plugin data import will be skipped because the plugin com.example.plugin version 3.0.0 is required, and you are using 2.5.0. The backup was created with version 3.1.0. |
| AbstractDatabaseDataConverter | INFO | Backup / Counted | {{Object was skipped with a reason INVALID_FIELDS and message: Cannot convert value 'xyz' to Long. Object: DbRawObjectData
{table='CONTENT', id=98765, ...}
}} |
| XmlBackupContainerWriter | WARN | Backup / Not counted | Attachment with id 98765 not found in database. |
| XmlBackupContainerWriter | WARN | Backup / Not counted | Attachment file not found. Attachment data not found for attachment ref [id=98765, ...] |
| XmlBackupContainerWriter | ERROR | Backup / Not counted | {{Unexpected exception while backup up an attachment AttachmentInfo
{id=98765, containerId=11111, version=1}
. The file might be skipped from the backup.}} |