명령줄로 모든 배지를 강제로 부여하는 방법?

배지는 하루에 한 번만 지급됩니다.
명령줄에서 지급 과정을 “지금” 바로 예약하거나 강제할 수 있는 방법이 있을까요?

가장 쉬운 방법은 /sidekiq/scheduler를 방문하여 이름에 "grant"라는 단어가 포함된 작업을 찾는 것입니다. 아마도 Jobs::BadgeGrant를 원할 가능성이 높지만, 일부 배지는 자체 작업을 가질 수 있습니다.

지금부터 24시간 이내의 모든 예약된 sidekiq 작업을 확인해 보았지만, grant 토큰이 포함된 작업은 없었습니다.

아… 이상하네요. 이런 줄을 못 보시는 건가요?

이것은 개발 서버인가요, 아니면 프로덕션 서버인가요?

현재 프로덕션 환경(forum.kozovod.com)에서 확인 중입니다.
맞습니다. 스크린샷처럼 해당 항목이 없습니다.

방금 장시간 동안 배지가 발급되지 않았다는 사실을 알아차렸습니다. 이제 컨테이너를 재구성하고 재시작 후 태스크가 예약되는지 확인하겠습니다.

또한, 제 커스텀 SQL 배지 중 하나가 오류를 내고 있었는데, 이것이 다른 모든 배지가 작동하지 못하게 만드는 원인이 될 수 있을까요?

이론적으로는 아닙니다.

가장 가능성 있는 원인은 docker-manager 업데이트가 잘못되어 일부 sidekiq 작업이 로드되지 못한 것 같습니다. 재빌드 후에는 정상적으로 작동할 것으로 기대합니다.

네, 재빌드가 잘 완료되었습니다.

하지만 완료 후 몇 분이 지났는데도, 125개 이상의 예약 작업 중 어디에서도 grant 토큰을 찾을 수 없습니다. 제 설정에 문제가 있는 걸까요?

네, 그럴 가능성이 높습니다. /logs에 오류가 있나요? 특이한 플러그인이 있나요?

음, 최근 약 20분 동안은 치명적인 문제가 없었습니다:

배지 실행/스케줄링을 깨뜨릴 수 있는 의심스러운 부분이 보이나요?

명백한 문제는 보이지 않습니다. 콘솔에 들어가서 Jobs::BadgeGrant를 입력하면 어떻게 되나요? 다음과 같이 보여야 합니다:

[1] pry(main)> Jobs::BadgeGrant
=> Jobs::BadgeGrant

자, 이제 말씀드리겠습니다:

그 후로 /logs에 새로운 오류가 발생하지 않았습니다.

grant 토큰이 포함된 새로운 항목도 /sidekiq/scheduled에 없습니다.

간섭을 일으킬 수 있는 플러그인이 있나요?

아래는 활성화된 플러그인 목록입니다. 인기 있고 지원되는 것만 사용하려고 합니다:

          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/joebuhlig/discourse-feature-voting.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-cakeday.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-canned-replies.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-bbcode.git
          - git clone https://github.com/angusmcleod/discourse-locations.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/angusmcleod/discourse-custom-wizard.git

확인차 묻습니다. “Scheduled” 탭을 보고 계신 건가요, 아니면 “Scheduler” 탭을 보고 계신 건가요? 배지 작업은 Scheduler 아래에 있어야 합니다.

(참고: 그 명명법이 정말 혼란스럽네요!)

감사합니다.
Scheduler 아래에서 이제 다음 항목들을 볼 수 있습니다:

  • Jobs::GrantNewUserOfTheMonthBadges
  • Jobs::GrantAnniversaryBadges
  • Jobs::BadgeGrant

모든 Scheduler 작업은 “Recurring Jobs” 섹션에 표시됩니다.

이제 “Trigger” 버튼을 클릭해서 결과를 확인해도 안전한가요?

아, 다행이네요 - 그러면 해결하기 훨씬 간단해지겠네요!

네, 트리거 버튼은 안전합니다 :slight_smile:

감사합니다. 이제 실행 중입니다.

지난번에는 10,000초가 걸렸으니 내일 아침에 다시 확인해 보겠습니다.

특정 배지 하나만 처리할 수 있는 방법이 있을까요? 혹시 명령줄에서 가능할까요?

10,000초는 꽤 긴 시간입니다! 메타에서는 500초가 소요됩니다. 혹시 사용자 지정 배지 쿼리가 비효율적인 것은 아닌가요? (이것이 기본 설정에서 사용자 지정 SQL 기능을 비활성화하는 이유입니다)

감사합니다. 쿼리를 빠르게 검토해서 하나를 조금 수정했는데, 이제 약 1초밖에 걸리지 않습니다. 또한 SQL 최적화에 대한 질문을 별도의 토픽에 크로스포스팅했습니다.

배지 문제로 돌아가면, 이제 정상 작동하며 모든 배지가 지급되었습니다. 도움과 빠른 답변에 감사드립니다.