Skip to content

[TroubleShooting] Webflux Exception 처리 이슈 #44

@hyun1202

Description

@hyun1202

Mono나 Flux의 SwitchIfEmpty 함수를 이용하여 Exception 처리 시 항상 호출이 되었던 이슈를 확인했습니다.

이슈

해당 계정은 활성화가 된 계정임에도 아래와 같이 항상 CustomException 클래스의 생성자가 실행되었습니다.
image

정상적인 계정이기에 예외가 발생하지 않는 것을 확인할 수 있습니다.
image

원인

이는 switchIfEmpty가 미리 실행시켜 값을 만들어 놓기 때문에 발생하는 문제인데, 실제로 안에 실행되는 메서드가 굳이 실행되지 않아도 된다면 lazy evaluation 전략을 사용하여 defer나 fromSupplier를 이용하여 해결할 수 있습니다.

해결

해당 로직은 비용이 많이 크지는 않지만, 굳이 실행이 안되도 되는 메서드로 판단했기에 defer을 사용했습니다.
image

실행 후 정상적인 계정이면 해당 객체가 생성되지 않게 됩니다.
image

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions