kopia lustrzana https://github.com/snarfed/bridgy-fed
ATProto.send: short circuit out for deletes of objects we don't have
fixes https://console.cloud.google.com/errors/detail/COjSuYPS0qLvmAE;time=P30D?project=bridgy-federated , https://console.cloud.google.com/errors/detail/COX1ss-HvOq5Xg;time=P30D?project=bridgy-federatedpull/1125/head
rodzic
aca0a060a3
commit
9ff28ea690
|
@ -412,10 +412,11 @@ class ATProto(User, Protocol):
|
|||
base_obj = obj
|
||||
if type in ('post', 'update', 'delete'):
|
||||
obj_as1 = as1.get_object(obj.as1)
|
||||
type = as1.object_type(obj_as1)
|
||||
# TODO: should we not load for deletes?
|
||||
base_obj = PROTOCOLS[obj.source_protocol].load(obj_as1['id'])
|
||||
if not base_obj:
|
||||
if type == 'delete':
|
||||
logger.info("Can't delete, we don't have original object {obj_as1['id']}")
|
||||
return False
|
||||
base_obj = obj
|
||||
|
||||
# convert to Bluesky record; short circuits on error
|
||||
|
|
|
@ -1023,13 +1023,13 @@ Sed tortor neque, aliquet quis posuere aliquam, imperdiet sitamet odio. In moles
|
|||
self.test_send_note_existing_repo()
|
||||
mock_create_task.reset_mock()
|
||||
|
||||
update = self.store_object(id='fake:delete', source_protocol='fake', our_as1={
|
||||
delete = self.store_object(id='fake:delete', source_protocol='fake', our_as1={
|
||||
'objectType': 'activity',
|
||||
'verb': 'delete',
|
||||
'actor': 'fake:user',
|
||||
'object': 'fake:post',
|
||||
})
|
||||
self.assertTrue(ATProto.send(update, 'https://bsky.brid.gy/'))
|
||||
self.assertTrue(ATProto.send(delete, 'https://bsky.brid.gy/'))
|
||||
|
||||
# check repo, record
|
||||
did = self.user.key.get().get_copy(ATProto)
|
||||
|
@ -1039,6 +1039,19 @@ Sed tortor neque, aliquet quis posuere aliquam, imperdiet sitamet odio. In moles
|
|||
|
||||
mock_create_task.assert_called() # atproto-commit
|
||||
|
||||
@patch.object(tasks_client, 'create_task')
|
||||
def test_send_delete_no_original(self, mock_create_task):
|
||||
self.make_user_and_repo()
|
||||
|
||||
obj = Object(id='fake:delete', source_protocol='fake', our_as1={
|
||||
'objectType': 'activity',
|
||||
'verb': 'delete',
|
||||
'actor': 'fake:user',
|
||||
'object': 'fake:post',
|
||||
})
|
||||
self.assertFalse(ATProto.send(obj, 'https://bsky.brid.gy/'))
|
||||
mock_create_task.assert_not_called() # atproto-commit
|
||||
|
||||
@patch.object(tasks_client, 'create_task', return_value=Task(name='my task'))
|
||||
def test_send_like(self, mock_create_task):
|
||||
user = self.make_user_and_repo()
|
||||
|
|
Ładowanie…
Reference in New Issue