기록의 정석

개발 4

Airflow WorkerLostError 딥 다이브

본 글은 기록 저장을 위해 제 회사 위키 글을 각색해서 옮겨온 글 입니다. Introduction 2023년 8월 초 즈음, 특정 패턴의 장애가 본격적으로 우리 팀을 괴롭히기 시작한다. Airflow 배치가 알 수 없는 이유로 실패하여 로그를 확인해보면, 항상 WorkerLostError 라는 에러를 확인 할 수 있었다. 이전부터 간헐적으로 계속 있었던 이슈였지만 8월 부터 꽤 자주 발생하기 시작했다. 그래서 우선은 관련해서 AWS 측에 Case Open 하였다. 돌아온 답변은 다음과 같다. 더보기 MWAA Service 팀에서는, 다음 위와 같은 해당 메시지는 Auto-scaling과 관련된 메시지가 아니며, celery에서 child 프로세스 중 하나가 일정 시간 동안 상태를 업데이트하지 않을 때 나..

[pyspark] TypeError: Column is not iterable 에러 트러블 슈팅

HTML 삽입 미리보기할 수 없는 소스 에러 발생 정보 Zeppelin 에서 pyspark 개발 중, TypeError: Column is not iterable 에러 발생 에러가 발생한 코드: # ... 생략 ... .withColumn( "representative_artists", when(size(col("representative_artists")) == 0, lit("")) .when( size(col("representative_artists")) == 1, col("representative_artists").getItem(0), ) .otherwise( concat_ws( " & ", array_join( # 에러 발생 지점 slice(col("representative_artists")..

System.in과 System.out에 대한 테스트

우테코 자동차 경주 콘솔게임을 구현하면서 특히 단위 테스트 작성 연습에 집중했다. 이제 어느정도 단위 테스트에 대해 자신감이 차올랐을 때 문득 궁금한 점이 생겼다. System.in과 System.out 관련 로직들은 어떻게 테스트하지? 콘솔로 부터 사용자의 입력을 받는 것 (e.g. 자동차 이름, 경기 진행 횟수)이나 콘솔에 게임에 관련해서 출력해주는 것 (e.g. 우승자 발표를 정해진 형식에 맞게 출력)은 콘솔이 있어야만 테스트 가능한 것 아닌가? 근데 테스트 할때 어떻게 콘솔을 이용해먹지? 이런 생각을 하며 자린이인 나는 도저히 어떤 식으로 해야할지 감이 안왔다. 그래서 이를 간단하게 테스트 할 방법이 없을까에 대해 알아보기 위해서 그때부터 구글링을 시작했다. 역시나 stackoverflow에서 멋..

개발/기타 2021.02.13