neounix
(Dark Matter)
2월 11, 2021, 10:40오전
1
현재 이 최신 릴리스를 실행 중입니다:
여전히 프로덕션 컨테이너에서 실행 중이며(문제 없음) 상태입니다.
이 릴리스를 기반으로 부트스트랩을 시도하고 있습니다:
오늘 여러 번 시도해 보았지만, 매번 여기에서 멈춥니다:
데이터 및 스탠바이 앱 컨테이너(부트스트랩 진행 중)의 로그를 확인해 보았으나, 오류나 문제가 없습니다.
부트스트랩을 할 때마다 항상 이 줄에서 멈춥니다:
I, [2021-02-11T10:37:25.133098 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
디버깅을 위해 어디를 살펴봐야 할지 단서가 있을까요?
생각할 수 있는 모든 로그(모든 컨테이너)를 확인해 보았지만 문제를 찾을 수 없습니다.
감사합니다.
추가 정보:
매번 멈추고 부트스트랩 프로세스에서 Ctrl+C로 빠져나오면 postmaster 프로세스가 남는 것 같습니다. 이후 이를 종료할 수 있습니다.
예시:
업데이트:
웹 템플릿의 “db:migrate” 줄을 주석 처리하면 부트스트랩이 정상적으로 재구축됩니다.
오류가 전혀 없는 상태에서 "rails db:migrate"가 멈추는 이상한 문제가 있는데, 이런 현상은 처음 경험해 봅니다.
이 최근 마이그레이션에 오류(또는 근본적인 문제)가 있는 것 같습니다.
committed 02:35AM - 11 Feb 21 UTC
Follow up https://github.com/discourse/discourse/pull/11968
Dismiss all new t… opics using the same DismissTopicService. In addition, MessageBus receives exact topic ids which should be marked as `seen`.
다음도 참고하세요:
# frozen_string_literal: true
class MoveNewSinceToNewTable < ActiveRecord::Migration[6.0]
def up
sql = <<~SQL
INSERT INTO dismissed_topic_users (user_id, topic_id, created_at)
SELECT users.id, topics.id, user_stats.new_since
FROM user_stats
JOIN users ON users.id = user_stats.user_id
JOIN user_options ON user_options.user_id = users.id
LEFT JOIN topics ON topics.created_at <= user_stats.new_since
LEFT JOIN topic_users ON topics.id = topic_users.topic_id AND users.id = topic_users.user_id
LEFT JOIN dismissed_topic_users ON dismissed_topic_users.topic_id = topics.id AND users.id = dismissed_topic_users.user_id
WHERE user_stats.new_since IS NOT NULL
AND topic_users.id IS NULL
AND dismissed_topic_users.id IS NULL
AND topics.archetype <> :private_message
AND topics.created_at >= GREATEST(CASE
WHEN COALESCE(user_options.new_topic_duration_minutes, :default_duration) = :always THEN users.created_at
WHEN COALESCE(user_options.new_topic_duration_minutes, :default_duration) = :last_visit THEN COALESCE(users.previous_visit_at,users.created_at)
This file has been truncated. show original
david
(David Taylor)
2월 11, 2021, 12:10오후
2
Hi @neounix , 공유해 주신 마이그레이션 관련 문제를 인지하고 있으며, 현재 수정 작업을 진행 중입니다.
2개의 좋아요
neounix
(Dark Matter)
2월 11, 2021, 12:13오후
3
안녕하세요 @david
답변해 주셔서 감사합니다!
방금 마이그레이션을 살펴보고 있었는데, "Discourse DB 마이그레이션 전문가"가 아닌 제 첫 번째 생각은 이것이 문제일 수 있다는 것이었습니다.
add_index :dismissed_topic_users, %i(user_id topic_id), unique: true
어쨌든 저는 Discourse 마이그레이션 문제에 대해 더 깊이 파고들 자격이 없으므로, 여기서 물러나 상황을 지켜보겠습니다.
다시 한번 감사합니다!
paresy
(Michael)
2월 11, 2021, 4:32오후
4
데이터 손실 없이 마이그레이션을 안전하게 중단하고 몇 가지 커밋을 되돌릴 수 있을까요?
성공적으로 작동했습니다.
1개의 좋아요
안녕하세요 @neounix ,
그렇게 무겁고 깨진 마이그레이션을 코드베이스에 포함시킨 점 죄송합니다. 해당 변경사항은 되돌려졌으므로 새로운 배포는 문제없이 진행될 것입니다:
master ← KrisKotlarek:broken-migration
merged 09:50PM - 11 Feb 21 UTC
Revert of:
https://github.com/discourse/discourse/pull/12018
https://github.co… m/discourse/discourse/pull/12041
4개의 좋아요
neounix
(Dark Matter)
2월 12, 2021, 1:37오전
6
안녕하세요 @kris.kotlarek
업데이트 감사합니다:
이 "대규모 마이그레이션"이 코어에 병합되기 전에 대규모 DB를 가진 테스트 구성에서 추가적인 검토와 엄격한 개발 테스트가 필요하다는 데 동의합니다. 다행히도 저희 사이트는 항상 프로덕션과 병렬로 부트스트랩을 수행하고 있어 마이그레이션 실패로 인한 다운타임이 발생하지 않았으므로, 저희 쪽에서는 걱정할 일이 없습니다. 이렇게 빠르게 되돌려 주셔서 감사합니다.
참고로 (기술적으로 정확히 말씀드리고 싶어서 죄송합니다…), 방금 재빌드 후 DB를 확인해 보니 “되돌리기” 과정에서 테이블이 DB에서 삭제되지 않았습니다. 큰 문제는 아니지만, 참고해 주시면 좋겠습니다:
discourse=> \d dismissed_topic_users
Table "public.dismissed_topic_users"
Column | Type | Collation | Nullable | Default
------------+-----------------------------+-----------+----------+---------------------------------------------------
id | bigint | | not null | nextval('dismissed_topic_users_id_seq'::regclass)
user_id | integer | | |
topic_id | integer | | |
created_at | timestamp without time zone | | |
Indexes:
"dismissed_topic_users_pkey" PRIMARY KEY, btree (id)
"index_dismissed_topic_users_on_user_id_and_topic_id" UNIQUE, btree (user_id, topic_id)
이러한 작업에 대한 노고와 마이그레이션을 빠르게 되돌려 주신 데 대해 다시 한번 감사드립니다.
2개의 좋아요
neounix
(Dark Matter)
2월 15, 2021, 4:06오전
7
최근 커밋 기준으로 이번 마이그레이션이 이제 원활하게 작동하고 있습니다:
master ← KrisKotlarek:new-approach-to-dismiss-new-migration
merged 09:50PM - 14 Feb 21 UTC
Original PR was reverted because of broken migration https://github.com/discours… e/discourse/pull/12058
I fixed it by adding this line
```
AND topics.id IN(SELECT id FROM topics ORDER BY created_at DESC LIMIT :max_new_topics)
```
This time it is left joining a limited amount of topics. I tested it on few databases and it worked quite smooth
4개의 좋아요
Falco
(Falco)
에 닫힘
2월 18, 2021, 11:00오전
8
이 주제는 6일 후 자동으로 닫혔습니다. 더 이상 새 답글을 작성할 수 없습니다.