RSS 폴링 플러그인이 수동으로 추가한 태그를 삭제합니다

RSS Polling 플러그인을 사용하여 RSS 피드를 가져오고 있습니다. 기본적으로 태그를 추가하지 않습니다. 대신 사용자가 수동으로 태그를 추가하도록 할 계획입니다. 하지만 플러그인이 다음 폴링 시 태그를 삭제합니다. 예를 들어

수정: create post for category and tag changes 설정과 관련이 있을 것 같아 설정을 변경해 보았지만, 여전히 태그가 삭제되고 있습니다. 예를 들어:

수정 2: 네, 이건 더 이상합니다. 일부 태그가 제거되었다고 표시되는 게시물이 있지만, 태그는 여전히 남아 있는 상태입니다…

Discourse 3.3.0.beta3-dev ( c13f64d35b )와 RSS Polling 0.0.1 be7b56e를 실행 중입니다.

1개의 좋아요

관련이 있을까요? 로그에 이 오류가 반복적으로 발생하고 있습니다:

Job exception: undefined method `name' for an instance of String 

/var/www/discourse/app/models/topic_embed.rb:125:in `map'

/var/www/discourse/app/models/topic_embed.rb:125:in `import'

/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:52:in `block in poll_feed'

/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:41:in `each'

/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:41:in `poll_feed'

/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:20:in `execute'

/var/www/discourse/app/jobs/base.rb:305:in `block (2 levels) in perform'

rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:292:in `block in perform'

/var/www/discourse/app/jobs/base.rb:288:in `each'

/var/www/discourse/app/jobs/base.rb:288:in `perform'

sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'

sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'

sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'

/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'

sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'

sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'

sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'

sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'

sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'

sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'

sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'

sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'

sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'

sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'

sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'

sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'

sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'

sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'

sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'

sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'

sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'

sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'

sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'

sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'

sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'

그리고 패턴을 찾은 것 같습니다:

  • /admin/plugins/rss_polling의 “Tags” 필드가 비어 있으면, 수동으로 추가된 태그가 다음 폴링 시 제거됩니다.
  • 해당 필드에 태그가 하나라도 있으면, 수동으로 추가된 태그는 유지되는 것으로 보입니다.

추가 테스트를 해본 결과, /admin/plugins/rss_polling의 RSS 피드에 태그가 할당되지 않으면 태그가 자동으로 제거되는 것이 문제인 것 같습니다.

1개의 좋아요

재현할 수 있습니다. :raised_hand:

단계별 재현 방법:

  • RSS 폴링에 https://meta.discourse.org/c/bug/1.rss 추가
  • 사용자 및 카테고리를 설정하되 태그는 비워둠 (저장)
  • 토픽이 가져오질 때까지 대기
  • 몇 개의 토픽을 선택하여 태그를 수동으로 추가
  • 다음 폴링까지 대기
  • 수동으로 태그가 추가된 토픽이 태그가 제거되도록 편집된 것을 확인

기대 결과: 수동으로 태그가 추가된 폴링된 토픽은 해당 태그가 제거되도록 편집되지 않아야 함
실제 결과: 폴링된 토픽의 태그가 덮어쓰기됨

(/logs에는 오류가 없었습니다)

6개의 좋아요

이상하네요. 이 오류가 계속 보고되고 있어요. 일주일 동안 1,344건이 쌓였더라고요. 꽤 일반적인 오류인 것 같습니다.

1개의 좋아요

가까운 로드맵에 수정 사항이 있나요?

아직 초기 단계일 것 같습니다. 혹시 관련 소식이 있는지 궁금해서요.

이 문제는 코어에서 TopicEmbed에서 발생하고 있습니다

4개의 좋아요

태그가 nil이거나 누락된 경우(재현 코드와 동일) 태그가 업데이트되지 않도록 수정했습니다:

이로 인해 목록에 나와 있는 재현 문제를 수정했습니다.

3개의 좋아요

안녕하세요, 이제 새로운 문제가 생긴 것 같습니다. 방금 Discourse를 3.3.0.beta4-dev( 7b8863fcd5 )로 업데이트했는데, 이제 어떤 가져온 게시물들이 매 폴링(polling)마다 업데이트되고 있지만, 실제로는 변경 사항이 보이지 않습니다. 이 게시물들의 공통점은 다음과 같습니다:

  • 모두 RSS 폴링을 통해 가져온 것입니다.
  • 가져올 때 RSS 폴링에 설정된 태그가 하나씩 부여되었습니다.
  • 그 후 두 번째 태그를 수동으로 추가했습니다.

다음은 예시 diff입니다. 변경 사항이 보이지 않습니다:

저희 입장에서는 이는 회귀(regression)입니다. 이전 버그는 모든 RSS 피드에 기본 태그를 추가함으로써 우회할 수 있었습니다. 그러면 태그를 수동으로 추가해도 문제가 없었습니다.但现在, 변경 사항 없이 반복적으로 업데이트되는 게시물들이 최신(Latest) 목록을 오염시키고 있습니다.

업데이트: 어쩌면 더 구체적이거나 로컬적인 문제일까요? 수동으로 태그가 추가된 모든 주제(topic)가 업데이트되는 것은 아니기 때문입니다. 업데이트된 게시물 중 일부에서 태그를 삭제했다가 다시 추가해보며 패턴을 찾고 있습니다. 결과를 찾으면 여기에 다시 답변드리겠습니다.

2개의 좋아요

네, 다시 등장하는 토픽들에 대해 이 패턴을 확인했습니다:

  • 모두 RSS 폴링(RSS Polling)을 통해 가져와졌습니다.
  • 가져와졌을 때 RSS 폴링 설정에 지정된 태그가 하나씩 부여되었습니다.
  • 두 번째 태그는 수동으로 추가했습니다.

추가 태그가 있는 토픽 중 일부만 계속 새로고침되고 나머지는 그렇지 않아서 혼란스러웠는데, 답은 간단합니다. RSS 피드가 여전히 해당 토픽을 호출하고 있기 때문이며, 오래된 토픽이나 RSS 피드에 최근 항목이 적은 토픽은 논리적으로 트리거되지 않습니다.

가능하다면 구현은 다음과 같이 단순하게 해주셨으면 합니다:

  1. 가져온 토픽이 새 토픽인 경우, RSS 폴링 설정에 정의된 태그가 있으면 가져옵니다.
  2. 가져온 토픽이 새 토픽이 아닌 경우, 태그를 전혀 확인하지 않습니다.

이렇게 하면 새로 가져온 토픽에는 기대하는 태그(또는 태그가 정의되지 않은 경우 태그 없음)가 부여되고, 기존 토픽은 수동으로 편집된 태그 때문에 변경되거나 새로고침되지 않습니다.

테스트된 솔루션이 적용될 때까지 이 패치를 되돌려 주시겠어요? 최신(Latest) 메인 페이지가 이러한 오래된 항목들로 가득 차 있어서, 이제 막 태그를 시작했고 수동으로 태그된 항목이 몇 개에 불과한 것이 다행입니다. 그렇지 않았다면 당분간 두 번째 태그를 제거하는 방법도 가능합니다…

풀링 시 태그가 제거되는 문제가 여전히 발생하고 있습니다.

“meta-hmd” 태그가 제거되고 있는 것을 볼 수 있습니다. 이 태그는 수동으로 추가되었지만, 다음 풀링 시점에 태그가 제거됩니다. “UploadVR” 태그는 RSS Polling 플러그인에 설정되어 있습니다. :slightly_frowning_face:

@RGJ 님이 링크한 내용처럼, 임베드 임포트가 태그가 변경된 것을 감지하여 게시물을 다시 가져오면서 추가된 태그를 제거하고 있습니다.

Discourse 토픽 태그 변경 사항을 무시할 수 있는 토글 옵션을 추가할 수 있을까요?

1개의 좋아요

RSS 폴링에서 태그 업데이트를 비활성화할 수 있는 옵션을 추가했습니다. 이 변경 사항이 사용 사례를 해결했는지 알려주세요.

5개의 좋아요

최고네요! 빠른 수정 감사합니다!

이 PR이 검토될 수 있을지 궁금합니다.

1개의 좋아요

@Heliosurge가 언급한 패치는 RSS Polling setting to use pubDate to set the date of imported topics 에서 가져온 것입니다. 이 패치는 여기서 논의 중인 주제와 매우 관련이 있습니다. 해당 기능을 우리가 직접 의뢰했으며, 현재 서버에 해당 RSS 폴링 버전이 설치되어 있기 때문입니다. 우리는 수천 개의 주제를 정확한 날짜로 가져왔고, @featheredtoast의 어제 패치를 테스트하기 위해 표준 RSS 플러그인을 설치할 경우 수천 개의 날짜가 부정확하게 변경되는 등 문제가 발생할까 우려하고 있습니다.

참고로, 우리는 패치된 버전을 몇 주 동안 운영해 왔으며, 수십 개의 다른 피드를 가져오는 동안 단 한 번의 오류도 없었습니다. 완벽하게 의도한 대로 작동하고 있습니다.

2개의 좋아요

공식 플러그인으로 되돌렸습니다.

더 이상 폴링되지 않는 토픽은 문제가 없어야 합니다.

이 패치 이전에는 보고하신 대로 더 이상 최신 상태가 아닌 오래된 가져온 피드는 변경되지 않아야 합니다.

따라서 수동으로 태그를 추가했는데 피드가 가져오지지 않는 피드는 문제없을 것입니다.

1개의 좋아요

@Heliosurge 여기서 수정 사항을 테스트해 주시면 좋겠습니다. 우리는 거의 매일 새로운 피드를 추가하고 있으며, 각 가져오기에 수십 개 또는 수백 개의 항목이 포함될 수 있으므로 PubDate를 유지하는 것이 우리에게 매우 중요합니다. 반면, 태그에 대한 해결책은 기다릴 수 있습니다.

여전히 완전히 새로운 피드를 추가하고 있다면, 아시다시피 그 새로운 피드들은 pubdate가 반영되지 않습니다.

앞서 언급했듯이, 오래되어 더 이상 가져오지 않는 기존 피드들은 태그가 변경되지 않습니다.

RSS 주제가 더 이상 대기열에 남지 않기 위해 얼마나 오래되어야 하는지 정확히 확신은 없습니다.

이 주제는 4일 후 자동으로 닫혔습니다. 새로운 답글 작성은 더 이상 허용되지 않습니다.