laravel/framework
Laravel 13.37.0 릴리스, 동시성 버그와 성능 개선
원제 laravel/framework v13.37.0
v13.37.0
Key Point
Laravel 애플리케이션의 동시성, 큐 처리, 관계형 쿼리 성능에 영향을 주는 중요한 버그 수정이 포함되어 있어 업그레이드 시 참고해야 한다.
핵심 요약
- Laravel 프레임워크 13.37.0이 릴리스되어 30개 이상의 버그 수정과 기능 개선을 포함한다.
- onOneServer()와 withoutOverlapping()을 함께 사용할 때의 경합 조건 버그를 수정했고, 가짜 Sleep을 limiter의 timeout에 올바르게 반영하도록 개선했다.
- MariaDB/MySQL에서 많은 데이터베이스를 가진 서버에서 getForeignKeys 성능을 최적화했고, 큐 푸시 실패 시 유니크 잠금을 해제하는 문제를 해결했다.
- 자기 참조 관계(self-referencing one-of-many relations)에서 has()와 withCount() 문제를 수정했으며, whereBelongsTo()와 whereAttachedTo()의 컬렉션 타입을 수정했다.
- queue:failed 명령어에 --queue 옵션을 추가했고, ScheduledTaskFailed에 runtime을 추가했으며, Eloquent cursor()에서 불필요한 모델 인스턴스 생성을 제거했다.
- 중첩된 JSON:API 관계 포함 시 N+1 쿼리 문제, through 관계의 incrementOrCreate() 오류, 조인과 soft delete의 restore() 실패를 수정했다.
- Eloquent Collection의 findOrFail() 메서드, JSON:API 리소스의 mergeWhen(), 조인 쿼리에서 latest()와 oldest() 컬럼 한정을 개선했다.
- queue:forget 명령어가 여러 ID를 받을 수 있도록 개선했고, JPEG XL(JXL) 이미지 포맷 지원을 추가했으며, SFTP/FTP 디스크에 detect_mime_type_using_path 옵션을 추가했다.
- withWhereHas() 콜백에서 컬럼 선택을 지원하도록 개선했고, through 관계의 firstOrNew(), firstOrCreate(), createOrFirst()에서 속성 컬럼을 한정시키는 문제를 수정했다.
- RedirectResponse가 Responsable을 구현하도록 지원하며, encrypted:object와 encrypted:collection 캐스트가 항상 dirty 상태로 표시되는 문제를 해결했다.
- Rule::numeric()에 strict 옵션을 추가했고, DynamoDbStore::many()가 숫자 키에 대해 잘못된 키 아래에 값을 반환하는 문제를 수정했다.
- Rule::when()과 Rule::unless()의 파라미터 타입에 Stringable을 추가했으며, 캐시된 Attribute 접근자가 속성 설정 후 오래된 값을 반환하는 문제를 해결했다.
- migrate:status 명령어에서 건너뛴 마이그레이션을 pending으로 보고하지 않도록 개선했고, 종료 경고를 억제하며 큐 listener 푸시 실패 시 유니크 잠금을 해제하는 등 전반적인 예외 처리를 개선했다.
릴리스 노트 보기 ↗github.com