Hibernate-reactive: Hibernate ORM λ§ˆμŠ€ν„°μ—μ„œ 깨짐

에 λ§Œλ“  2020λ…„ 08μ›” 03일  Β·  16μ½”λ©˜νŠΈ  Β·  좜처: hibernate/hibernate-reactive

Hibernate ReactiveλŠ” ν˜„μž¬ Hibernate ORM λ§ˆμŠ€ν„°μ— λŒ€ν•΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  ν…ŒμŠ€νŠΈλŠ” λ‹€μŒκ³Ό 같이 μ‹€νŒ¨ν•©λ‹ˆλ‹€.

Caused by: org.hibernate.AssertionFailure: possible non-threadsafe access to the session
    at org.hibernate.reactive.loader.ReactiveResultSetProcessor.initializeEntity(ReactiveResultSetProcessor.java:55)
    at org.hibernate.reactive.loader.ReactiveLoaderBasedResultSetProcessor.lambda$reactiveInitializeEntitiesAndCollections$3(ReactiveLoaderBasedResultSetProcessor.java:142)
    at org.hibernate.reactive.loader.ReactiveLoaderBasedResultSetProcessor$$Lambda$364/0000000000000000.apply(Unknown Source)
    at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:995)

원인은 @yrodiereκ°€ 7μ›” 30일에 μ»€λ°‹ν•œ λ³€κ²½ 사항인 것 κ°™μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  16 λŒ“κΈ€

ꡬ체적으둜 λ§ν•˜λ©΄ 문제λ₯Ό μΌμœΌν‚¨ 컀밋 쀑 ν•˜λ‚˜λΌκ³  μƒκ°ν•©λ‹ˆλ‹€.

μ’‹μ•„, λ‚΄ 잘λͺ»μ΄μ•Ό. μ–΄λ–»κ²Œ 도와 λ“œλ¦΄κΉŒμš”?

μ’‹μ•„, λ‚΄ 잘λͺ»μ΄μ•Ό. μ–΄λ–»κ²Œ 도와 λ“œλ¦΄κΉŒμš”?

μ•„λ‹ˆμš”, 그것은 λ‹Ήμ‹ μ˜ 잘λͺ»μ΄ μ•„λ‹™λ‹ˆλ‹€. μš°λ¦¬κ°€ 이런 일이 λ°œμƒν–ˆμ„ λ•Œ 감지할 수 μžˆλŠ” λ©”μ»€λ‹ˆμ¦˜μ΄ 두 ν”„λ‘œμ νŠΈμ— λͺ¨λ‘ μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. νŒŒμ† 원인을 μΆ”μ ν•˜λŠ” 것이 훨씬 더 어렀웠을 λ•Œ λͺ‡ μ£Ό ν›„κ°€ μ•„λ‹ˆλΌ 운이 μ’‹μ•„μ„œ 이것을 빨리 μ•Œμ•„μ°¨λ¦° 것은 μˆœμ „νžˆ μš°μ—°μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ μš°λ¦¬λŠ” 이와 같은 문제λ₯Ό μžλ™μœΌλ‘œ 찾을 수 μžˆλŠ” 방법을 μ°Ύμ•„μ•Ό ν•  κ²ƒμž…λ‹ˆλ‹€. 그리고 κ°€μž₯ 쒋은 방법이 λ¬΄μ—‡μΈμ§€λŠ” λΆ„λͺ…ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ ν›„ μ‹ μ€‘ν•˜κ²Œ 컀밋 μ°Ύκ³ , IλŠ” 우리의 볡사 / λΆ™μ—¬ λ„£κΈ° - 직업 μ½”λ“œλ₯Ό 톡해 λ³€κ²½ 사항을 볡제 μš°λ¦¬κ°€ν•΄μ•Ό ν•  ν•„μš” ν•΄μš” λͺ¨λ“  것 κ°™μŠ΅λ‹ˆλ‹€ μƒκ°ν•©λ‹ˆλ‹€. λ‚΄κ°€ μ˜¬λ°”λ₯΄κ²Œ μ΄ν•΄ν•˜κ³  μžˆλ‹€λ©΄ μˆ˜ν™” 개체 λͺ©λ‘μ—μ„œ μ΄λŸ¬ν•œ null을 ν•΄μ„ν•˜λŠ” λ°©λ²•λ§Œ μ•Œλ©΄ λ©λ‹ˆλ‹€.

κ·Έλž˜μ„œ μš°λ¦¬λŠ” 이와 같은 문제λ₯Ό μžλ™μœΌλ‘œ 찾을 수 μžˆλŠ” 방법을 μ°Ύμ•„μ•Ό ν•  κ²ƒμž…λ‹ˆλ‹€. 그리고 κ°€μž₯ 쒋은 방법이 λ¬΄μ—‡μΈμ§€λŠ” λΆ„λͺ…ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ¨Όμ € μ΅œμ‹  ORM μŠ€λƒ…μƒ·μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜λŠ” JOBλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¨Όμ € μ΅œμ‹  ORM μŠ€λƒ…μƒ·μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜λŠ” JOBλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘ μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 일정에 따라 μ‹€ν–‰ν•  수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” μš°λ¦¬κ°€ κ·Έλ ‡κ²Œ ν•  수 μ—†λ‹€λŠ” (μ•„λ§ˆλ„ 잘λͺ»λœ) 인상을 λ°›μ•˜μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ μš°λ¦¬λŠ” 이와 같은 문제λ₯Ό μžλ™μœΌλ‘œ 찾을 수 μžˆλŠ” 방법을 μ°Ύμ•„μ•Ό ν•  κ²ƒμž…λ‹ˆλ‹€. 그리고 κ°€μž₯ 쒋은 방법이 λ¬΄μ—‡μΈμ§€λŠ” λΆ„λͺ…ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ¨Όμ € μ΅œμ‹  ORM μŠ€λƒ…μƒ·μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜λŠ” JOBλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

Hibernate Search 와 λΉ„μŠ·ν•œ 것이 μžˆμŠ΅λ‹ˆλ‹€. ORM λΉŒλ“œκ°€ μ™„λ£Œλ  λ•Œλ§ˆλ‹€ μ΅œμ‹  Hibernate ORM μŠ€λƒ…μƒ·μ„ μ‚¬μš©ν•˜λŠ” Hibernate Search λΉŒλ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Jenkins μž‘μ—…μ„ μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— κ·Έλ ‡κ²Œ ν•  수 있으며 λ‹€λ₯Έ μž‘μ—…μ΄ μ™„λ£Œλœ ν›„ μž‘μ—…μ„ νŠΈλ¦¬κ±°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Hibernate Search 와 λΉ„μŠ·ν•œ 것이 μžˆμŠ΅λ‹ˆλ‹€. ORM λΉŒλ“œκ°€ μ™„λ£Œλ  λ•Œλ§ˆλ‹€ μ΅œμ‹  Hibernate ORM μŠ€λƒ…μƒ·μ„ μ‚¬μš©ν•˜λŠ” Hibernate Search λΉŒλ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Jenkins μž‘μ—…μ„ μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— κ·Έλ ‡κ²Œ ν•  수 있으며 λ‹€λ₯Έ μž‘μ—…μ΄ μ™„λ£Œλœ ν›„ μž‘μ—…μ„ νŠΈλ¦¬κ±°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

아직 Jenkinsκ°€ μ—†λ‹€λŠ” 점을 μ œμ™Έν•˜λ©΄ μ™„λ²½ν•  κ²ƒμž…λ‹ˆλ‹€ :-/

ν•˜λ‚˜ λ§Œλ“€κ² μŠ΅λ‹ˆλ‹€.

ν•˜λ‚˜ λ§Œλ“€κ² μŠ΅λ‹ˆλ‹€.

큰 확인.

λ¬Έμ œλŠ” #311μ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@Sanne ORM의 λ‹€μŒ λ¦΄λ¦¬μŠ€λŠ” μ–Έμ œμΈκ°€μš”?

μ•ˆλ…•ν•˜μ„Έμš” @gavinking , ORM의 마이크둜 λ¦΄λ¦¬μŠ€λŠ” μš”μ²­ μ‹œ νŠΈλ¦¬κ±°λ©λ‹ˆλ‹€. κΈ΄κΈ‰ν•œ 경우 내일 ν•˜κ³ , κ·€ν•˜μ—κ²Œ 더 μ ν•©ν•œ 경우 더 λ§Žμ€ PR을 기닀릴 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ μ·¨ν–₯이 무엇인지 μ•Œλ €μ£Όμ„Έμš”.

https://github.com/hibernate/hibernate-orm/pull/3484 μ΄μ™Έμ˜ λ‹€λ₯Έ 것은 ν•„μš”ν•˜μ§€ μ•Šλ‹€λŠ” 것을 μ˜¬λ°”λ₯΄κ²Œ μ΄ν•΄ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš” @gavinking , ORM의 마이크둜 λ¦΄λ¦¬μŠ€λŠ” μš”μ²­ μ‹œ νŠΈλ¦¬κ±°λ©λ‹ˆλ‹€. κΈ΄κΈ‰ν•œ 경우 내일 ν•˜κ³ , κ·€ν•˜μ—κ²Œ 더 μ ν•©ν•œ 경우 더 λ§Žμ€ PR을 기닀릴 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ μ·¨ν–₯이 무엇인지 μ•Œλ €μ£Όμ„Έμš”.

κΈ€μŽ„μš”, κΈ‰ν•˜μ§€λŠ” μ•Šμ§€λ§Œ #310κ³Ό #311을 λ³‘ν•©ν•˜κ³  λ§ˆμŒμ— 두지 μ•ŠλŠ” 것이 쒋을 κ²ƒμž…λ‹ˆλ‹€.

ν™•μ‹€νžˆ, μš°λ¦¬κ°€ ν•„μš”ν•œ λ‹€λ₯Έ 것을 생각할 수 μ—†λ‹€λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.

https://github.com/hibernate/hibernate-orm/pull/3484 μ΄μ™Έμ˜ λ‹€λ₯Έ 것은 ν•„μš”ν•˜μ§€ μ•Šλ‹€λŠ” 것을 μ˜¬λ°”λ₯΄κ²Œ μ΄ν•΄ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

#311이 문제λ₯Ό μ™„μ „νžˆ ν•΄κ²°ν–ˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ§€κΈˆ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€ https://in.relation.to//2020/08/10/hibernate-orm-5/

μ§€κΈˆ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€

ꡉμž₯ν•©λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€. 그러면 였늘 밀에 λͺ¨λ“  것을 λ³‘ν•©ν•˜κ² μŠ΅λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰