diff options
author | Benjamin Neff <benjamin@coding4coffee.ch> | 2021-09-18 20:27:46 +0300 |
---|---|---|
committer | Benjamin Neff <benjamin@coding4coffee.ch> | 2021-09-18 20:29:56 +0300 |
commit | 2081f39a72fdb21de706c523745d9d69a6988ac2 (patch) | |
tree | 273036549862441485485a553942bd2a6384c832 /lib | |
parent | 750186319ec7a6f6d9a8f928f40223ae440e8dc3 (diff) | |
parent | 4630b49ec49b627cdff955567614f127a1841f91 (diff) |
Merge pull request #8010 from cmrd-senya/fix-archive-edge-cases
Fix archive edge cases
closes #8017
closes #8257
Diffstat (limited to 'lib')
-rw-r--r-- | lib/archive_importer/entity_importer.rb | 3 | ||||
-rw-r--r-- | lib/archive_importer/own_entity_importer.rb | 4 | ||||
-rw-r--r-- | lib/archive_importer/own_relayable_importer.rb | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/lib/archive_importer/entity_importer.rb b/lib/archive_importer/entity_importer.rb index 9ed4d04f9..22c6f49e4 100644 --- a/lib/archive_importer/entity_importer.rb +++ b/lib/archive_importer/entity_importer.rb @@ -15,8 +15,11 @@ class ArchiveImporter rescue DiasporaFederation::Entities::Signable::SignatureVerificationFailed, DiasporaFederation::Discovery::InvalidDocument, DiasporaFederation::Discovery::DiscoveryError, + DiasporaFederation::Federation::Fetcher::NotFetchable, + OwnRelayableImporter::NoParentError, ActiveRecord::RecordInvalid => e logger.warn "#{self}: #{e}" + self.persisted_object = nil end attr_reader :json diff --git a/lib/archive_importer/own_entity_importer.rb b/lib/archive_importer/own_entity_importer.rb index 2d585c0cd..736115f63 100644 --- a/lib/archive_importer/own_entity_importer.rb +++ b/lib/archive_importer/own_entity_importer.rb @@ -21,7 +21,9 @@ class ArchiveImporter attr_reader :old_author_id def persisted_object - @persisted_object ||= (instance if real_author == old_author_id) + return @persisted_object if defined?(@persisted_object) + + @persisted_object = (instance if real_author == old_author_id) end def real_author diff --git a/lib/archive_importer/own_relayable_importer.rb b/lib/archive_importer/own_relayable_importer.rb index a3325735a..c9ff6f82f 100644 --- a/lib/archive_importer/own_relayable_importer.rb +++ b/lib/archive_importer/own_relayable_importer.rb @@ -2,6 +2,8 @@ class ArchiveImporter class OwnRelayableImporter < OwnEntityImporter + class NoParentError < RuntimeError; end + def entity fetch_parent(symbolized_entity_data) entity_class.new(symbolized_entity_data) @@ -19,6 +21,8 @@ class ArchiveImporter break entity_class::PARENT_TYPE if entity_class.const_defined?(:PARENT_TYPE) } entity = Diaspora::Federation::Mappings.model_class_for(type).find_by(guid: data.fetch(:parent_guid)) + raise NoParentError if entity.nil? + data[:parent] = Diaspora::Federation::Entities.related_entity(entity) end end |