현재의 데이터 검증 체크는 사용자가 실제 활동에 관여할 때 적용됩니다(즉, 필요할 때 자동으로 수정됩니다). 하지만 여기에서 하시는 것처럼 직접적인 인물(인스턴스) 액터 접근에도 동일한 검증 체크를 확장하는 것이 좋은 아이디어입니다. 아래 PR이 이를 수행합니다:
이 문제를 끈질기게 파고들어 주셔서 감사합니다. 잘못된 데이터가 있는 실제 인스턴스를 통해 검증 체크가 기대대로, 그리고 필요할 때 제대로 작동하는지 확인할 수 있어 매우 도움이 됩니다. 최근 변경 사항으로 이어진 원래의 데이터 손상 문제가 다른 형태로 다시 발생할 수 있으므로, 여기서는 데이터가 필요해지는 시점에 데이터 일관성이 유지되도록 보장하는 것이 목표입니다(마이그레이션 등으로 처리하는 대신). 비슷한 문제를 발견하시면 알려주세요!
@angus 그동안 지원해 주셔서 감사합니다. 이제 받은 편지함/보낸 편지함 URL은 정상적으로 보이지만, 여전히 팔로우 기능이 작동하지 않습니다. 두 개의 다른 Mastodon 인스턴스에서 @kuba@forum.internet-czas-dzialac.pl을 팔로우해 보았지만, 두 경우 모두 실패했습니다.
일반 사용자 액터에 대한 팔로우 요청을 제출할 때 다음 오류가 발생합니다:
[Discourse Activity Pub] Failed to process https://mastodon.internet-czas-dzialac.pl/6bef64d0-c8ad-473c-85f6-d3fd190b5ebd:
Activity is not supported for actor and object
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:140:in `process_failed'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:139:in `process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:56:in `process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:36:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:14:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
(...)
그리고 팔로우 요청을 수행할 때는 다음과 같은 오류가 발생합니다:
[Discourse Activity Pub] Failed to process https://mastodon.internet-czas-dzialac.pl/users/icd#follows/5003/undo:
Object is not ready
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:140:in `process_failed'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:137:in `process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:56:in `process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:36:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
(...)
이상하네요 - 저는 그냥 일반 사람(person) 액터를 팔로우하려고 하고 있습니다. 여기 로그는 @kuba@forum.internet-czas-dzialac.pl을 팔로우하려고 할 때의 것인데 (이것이 Profile - kuba - Forum Internet. Czas działać! 에 해당한다고 생각했지만, 제가 무언가를 잘못 알고 있는 건가요?)