๐Ÿ“‚๋ฐฑ์—”๋“œ : BackEnd

[SpringBoot ํ•˜๋ฉฐ ๋งˆ์ฃผ์นœ ์˜ค๋ฅ˜] Transaction silently rolled back because it has been marked as rollback-only

mc.thd 2023. 10. 9. 19:09

ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋˜ ์ค‘, ์ž˜ ๋˜๋˜ api์—์„œ Transaction silently rolled back because it has been marked as rollback-only ๋ผ๋Š” ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋ฉฐ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

1. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ฌด์„ฑ์˜ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ง์ž

1-1) ์˜ˆ์™ธ ๋ธ”๋ž™ํ™€์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์˜ˆ์™ธ๋ฅผ ํก์ˆ˜ํ•ด๋ฒ„๋ฆฌ๊ณ  ๋‹ค์Œ ๋กœ์ง์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

try{

}catch(IOException e){
	// ์˜ˆ์™ธ ๋ธ”๋ž™ํ™€
}

์œ„ ์ฝ”๋“œ์—์„œ IOException์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ๋ฅผ try/catch๋กœ ๊ฐ์‹ธ๋ฉด ๋‹ค์Œ ๋กœ์ง์ด ์ •์ƒ ์ˆ˜ํ–‰๋œ๋‹ค. 

๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์ด ์ •์ƒ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค๊ณ  ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฒ„๊ทธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

1-2) ๋ฌด์„ฑ์˜ํ•œ throws๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์œ„ ๋ฉ”์†Œ๋“œ์—์„œ throwsํ•˜๊ณ  ๊ทธ ์ƒ์œ„์—์„œ throws ๋˜ ๊ทธ ์ƒ์œ„์—์„œ throws...๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ ์–ด๋ ต๊ฒŒ ๋œ๋‹ค.

 

2. Transaction silently rolled back because it has been marked as rollback-only

A์„œ๋น„์Šค ์•ˆ์—์„œ B์„œ๋น„์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ,

 

B์„œ๋น„์Šค์—์„œ Unchecked Exception์„ ๋˜์ง€๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์€ ์ „์—ญ์ ์œผ๋กœ rollback-only๋กœ ๋งˆํ‚น๋œ๋‹ค.

 

A์„œ๋น„์Šค ๋ฉ”์†Œ๋“œ์—์„œ try/catch๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜๋„, ํŠธ๋žœ์žญ์…˜์ด rollback-only๋กœ ๋งˆํ‚น๋˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜๊ณ  ์œ„์™€๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

(ํŠธ๋žœ์žญ์…˜์€ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค) (์ถœ์ฒ˜ : https://techblog.woowahan.com/2606/)

 

3. ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

3-1 ) Unchecked Exception์ด ์•„๋‹Œ Checked Exception์„ ์ƒ์†๋ฐ›์€ Custom Exception์„ ๋งŒ๋“ค๊ณ  ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋˜์ง€๊ฒŒ ๋˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3-2) @Transactional์˜ noRollbackFor ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ RollBack๋˜์ง€ ์•Š์„ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3-3)  ๋‚ด๋ถ€ ๋ฉ”์†Œ๋“œ์˜ @Transactional ์ „ํŒŒ์˜ต์…˜์„ REQUIRES_NEW๋กœ ์ง€์ •ํ•˜์—ฌ  ๋…๋ฆฝ์ ์ธ ํŠธ๋žœ์žญ์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

@Transactional(propagation = Propagation.REQUIRES_NEW)

 

 

 

(์ฐธ๊ณ ์ž๋ฃŒ)

https://tlatmsrud.tistory.com/102

 

[ํ† ๋น„์˜ ์Šคํ”„๋ง ์Šคํ„ฐ๋””] 7์ฃผ์ฐจ / ์˜ˆ์™ธ / ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋ฐ ์ „๋žต

1. ๊ฐœ์š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง ๊ฐœ๋ฐœ๋งŒํผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ํˆฌ์žํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฌด์„ฑ์˜ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋งŽ์€ ๋ฒ„๊ทธ๋ฅผ ๋‚ณ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. 2. ์ดˆ๋‚œ๊ฐ ์˜ˆ์™ธ์ฒ˜

tlatmsrud.tistory.com

https://ws-pace.tistory.com/m/138

 

Exception & Transaction rollback ์ •๋ฆฌ

Exception๊ณผ Error์˜ ๊ตฌ๋ถ„ ์˜ˆ์™ธ์™€ ์—๋Ÿฌ์— ๋Œ€ํ•œ ์ฐจ์ด๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž. ์˜ˆ์™ธ(Exception)์€ ์‚ฌ์šฉ์ž์˜ ์ž˜๋ชป๋œ ๊ฐ’์ด๋‚˜ ์ ‘๊ทผ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ •์ƒ์ ์ธ ์ฝ”๋“œ์˜ ํ๋ฆ„์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ํ–‰๋™์„ ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ

ws-pace.tistory.com