Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/diaspora/diaspora.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBenjamin Neff <benjamin@coding4coffee.ch>2021-09-18 20:27:46 +0300
committerBenjamin Neff <benjamin@coding4coffee.ch>2021-09-18 20:29:56 +0300
commit2081f39a72fdb21de706c523745d9d69a6988ac2 (patch)
tree273036549862441485485a553942bd2a6384c832 /lib
parent750186319ec7a6f6d9a8f928f40223ae440e8dc3 (diff)
parent4630b49ec49b627cdff955567614f127a1841f91 (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.rb3
-rw-r--r--lib/archive_importer/own_entity_importer.rb4
-rw-r--r--lib/archive_importer/own_relayable_importer.rb4
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