SpringSessionSynchronization's beforeCompletion unbinds after disconnect failure as well
Issue: SPR-13089
This commit is contained in:
		
							parent
							
								
									11401bd5e4
								
							
						
					
					
						commit
						8c337a48a9
					
				|  | @ -1,5 +1,5 @@ | ||||||
| /* | /* | ||||||
|  * Copyright 2002-2014 the original author or authors. |  * Copyright 2002-2015 the original author or authors. | ||||||
|  * |  * | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  * you may not use this file except in compliance with the License. |  * you may not use this file except in compliance with the License. | ||||||
|  | @ -112,18 +112,21 @@ public class SpringSessionSynchronization implements TransactionSynchronization, | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void beforeCompletion() { | 	public void beforeCompletion() { | ||||||
| 		Session session = this.sessionHolder.getSession(); | 		try { | ||||||
| 		if (this.sessionHolder.getPreviousFlushMode() != null) { | 			Session session = this.sessionHolder.getSession(); | ||||||
| 			// In case of pre-bound Session, restore previous flush mode. | 			if (this.sessionHolder.getPreviousFlushMode() != null) { | ||||||
| 			session.setFlushMode(this.sessionHolder.getPreviousFlushMode()); | 				// In case of pre-bound Session, restore previous flush mode. | ||||||
|  | 				session.setFlushMode(this.sessionHolder.getPreviousFlushMode()); | ||||||
|  | 			} | ||||||
|  | 			// Eagerly disconnect the Session here, to make release mode "on_close" work nicely. | ||||||
|  | 			session.disconnect(); | ||||||
| 		} | 		} | ||||||
| 		// Eagerly disconnect the Session here, to make release mode "on_close" work nicely. | 		finally { | ||||||
| 		session.disconnect(); | 			// Unbind at this point if it's a new Session... | ||||||
| 
 | 			if (this.newSession) { | ||||||
| 		// Unbind at this point if it's a new Session... | 				TransactionSynchronizationManager.unbindResource(this.sessionFactory); | ||||||
| 		if (this.newSession) { | 				this.holderActive = false; | ||||||
| 			TransactionSynchronizationManager.unbindResource(this.sessionFactory); | 			} | ||||||
| 			this.holderActive = false; |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -112,18 +112,21 @@ public class SpringSessionSynchronization implements TransactionSynchronization, | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void beforeCompletion() { | 	public void beforeCompletion() { | ||||||
| 		Session session = this.sessionHolder.getSession(); | 		try { | ||||||
| 		if (this.sessionHolder.getPreviousFlushMode() != null) { | 			Session session = this.sessionHolder.getSession(); | ||||||
| 			// In case of pre-bound Session, restore previous flush mode. | 			if (this.sessionHolder.getPreviousFlushMode() != null) { | ||||||
| 			session.setFlushMode(this.sessionHolder.getPreviousFlushMode()); | 				// In case of pre-bound Session, restore previous flush mode. | ||||||
|  | 				session.setFlushMode(this.sessionHolder.getPreviousFlushMode()); | ||||||
|  | 			} | ||||||
|  | 			// Eagerly disconnect the Session here, to make release mode "on_close" work nicely. | ||||||
|  | 			session.disconnect(); | ||||||
| 		} | 		} | ||||||
| 		// Eagerly disconnect the Session here, to make release mode "on_close" work nicely. | 		finally { | ||||||
| 		session.disconnect(); | 			// Unbind at this point if it's a new Session... | ||||||
| 
 | 			if (this.newSession) { | ||||||
| 		// Unbind at this point if it's a new Session... | 				TransactionSynchronizationManager.unbindResource(this.sessionFactory); | ||||||
| 		if (this.newSession) { | 				this.holderActive = false; | ||||||
| 			TransactionSynchronizationManager.unbindResource(this.sessionFactory); | 			} | ||||||
| 			this.holderActive = false; |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue