본문 바로가기

전체 글16

Spring Boot 3 버전 주요 변경 사항 Spring Boot 3.x.x 버전은 Java 17 버전 이상을 지원한다.Spring Security 버전은 6.x.x을 지원한다.Java EE를 jakarta EE로 대체한다.javax 패키지를 jakarta로 변경해야한다.javax.persistence.* → jakarta.persistence.*javax.validation.* → jakarta.validation.*등등 …참고: https://www.samsungsds.com/kr/insights/java_jakarta.htmlJava의 record 키워드java 14버전에 새로 생긴 키워드 record불변 데이터 객체를 쉽게 생성할 수 있는 클래스lombok 대신에 record 클래스로 만들어서 사용하면 lombok과 비슷한 기능을 사용할 수.. 2024. 7. 16.
deadlock found when trying to get lock 에러 해결 deadlock found when trying to get lock 에러가 나는 케이스는 실제로 deadlock이 걸렸을 때, 혹은 lock을 걸고 수행하는 트랜잭션이 끝나지 않았을 때 바로 같은 row에 lock을 걸려고 할 때 나타난다. 따닥과 같은 api 중복 요청 시에도 발생했고 최근에는 SQS로 받은 event를 처리하는데 event가 연속으로 날라와서 거의 동시에 처리할 때 에러를 마주했다. 두 개의 다른 event payload가 다른 row에 대해 처리함에도 불구하고 에러를 마주했다. 로직 안의 update문에서는 인덱스를 걸지 않은 컬럼을 where절에 사용했고 따라서 row 전체에 lock을 걸어서 발생한 문제였다.id값을 조회해서 where절에 id를 넣어주는 것으로 해결할 수 있었다. 2024. 7. 16.
[Filebeat] 파일 수집과 registry 파일 수집과 registryfilebeat는 registry에 파일을 어디까지 읽었는지 offset으로 저장한다.cursor의 offset에 해당하는 숫자가 파일내의 바이트 단위 offset이다.output으로 설정된 시스템(es나 logstash)와 연결이 끊기면 마지막으로 전송된 줄을 추적하고 연결이 다시 되면 다시 마지막으로 전송된 줄부터 파일을 읽어서 전송한다.logstash가 죽더라도 logstash가 정상 구동되고 filebeat와 연결되면 그때부터 다시 로그를 수집하고 registry가 업데이트된다. 파일비트의 파일 식별 기준리눅스 파일시스템에서 파일비트는 inode와 device 값을 사용하여 파일을 식별한다.디스크에서 파일을 제거하면 새로운 파일이 제거된 inode와 device값을 할당.. 2024. 7. 14.
[Filebeat] 8 버전 filestream input 타입 재수집 이슈 filebeat 8.7 버전의 filestream input 타입으로 로그 파일을 수집하는 환경에서 로그 파일을 재수집하는 이슈가 발생했다. 로그파일은 일자별로 rotate되고 있는 상황이었다. 특정 일자의 로그 파일을 수집하다가 처음부터 다시 읽는 현상 간헐적으로 발생했고 어떤 파일만 재수집했는지 registry를 분석했다.두가지 상황에서 재수집했다.1. 파일비트 재시작 할 때 2. 특정 파일을 수집하는 도중에 처음부터 수집하는 경우  분석 결과, 1번의 경우에 재시작하면서 registry에 저장된 inode에 해당된 파일을 읽으려고 시도 -> 저장된 offset이 파일의 바이트 크기보다 커서 offset에 해당하는 내용이 없음-> 처음부터 수집, 파일비트 로그는 다음과 같이 찍힘 File was tr.. 2024. 7. 14.