mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 02:29:03 +00:00 
			
		
		
		
	Close unnecessary connections (#13177)
This commit is contained in:
		
							parent
							
								
									5a6310eff9
								
							
						
					
					
						commit
						c5edf37cfe
					
				| @ -9,6 +9,8 @@ public interface JdbiHandleManager { | |||||||
| 
 | 
 | ||||||
|   Handle get(); |   Handle get(); | ||||||
| 
 | 
 | ||||||
|  |   boolean handleExists(); | ||||||
|  | 
 | ||||||
|   void clear(); |   void clear(); | ||||||
| 
 | 
 | ||||||
|   default ThreadFactory createThreadFactory() { |   default ThreadFactory createThreadFactory() { | ||||||
|  | |||||||
| @ -94,13 +94,9 @@ public class JdbiTransactionManager { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public void terminateHandle() { |   public void terminateHandle() { | ||||||
|     if (IN_TRANSACTION_HANDLES.contains(handleManager.get().hashCode())) { |     if (handleManager.handleExists()) { | ||||||
|  |       IN_TRANSACTION_HANDLES.remove(handleManager.get().hashCode()); | ||||||
|       handleManager.clear(); |       handleManager.clear(); | ||||||
|     } |     } | ||||||
|     IN_TRANSACTION_HANDLES.remove(handleManager.get().hashCode()); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public boolean containsHandle(int hashCode) { |  | ||||||
|     return IN_TRANSACTION_HANDLES.contains(hashCode); |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -57,6 +57,12 @@ class LinkedRequestScopedJdbiHandleManager implements JdbiHandleManager { | |||||||
|     return handle; |     return handle; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   @Override | ||||||
|  |   public boolean handleExists() { | ||||||
|  |     // TODO | ||||||
|  |     return false; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   @Override |   @Override | ||||||
|   public void clear() { |   public void clear() { | ||||||
|     String parent = getConversationId(); |     String parent = getConversationId(); | ||||||
|  | |||||||
| @ -38,6 +38,11 @@ public class ManagedHandleInvocationHandler<T> implements InvocationHandler { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private Object handleInvocation(Method method, Object[] args) throws Throwable { |   private Object handleInvocation(Method method, Object[] args) throws Throwable { | ||||||
|  |     if (CollectionDAO.class.isAssignableFrom(underlying) && method.isAnnotationPresent(CreateSqlObject.class)) { | ||||||
|  |       return getWrappedInstanceForDaoClass(method.getReturnType()); | ||||||
|  |     } else { | ||||||
|  |       Object dao; | ||||||
|  |       if (JdbiUnitOfWorkProvider.getInstance().getHandleManager().handleExists()) { | ||||||
|         Handle handle = JdbiUnitOfWorkProvider.getInstance().getHandle(); |         Handle handle = JdbiUnitOfWorkProvider.getInstance().getHandle(); | ||||||
|         LOG.debug( |         LOG.debug( | ||||||
|             "{}.{} [{}] Thread Id [{}] with handle id [{}]", |             "{}.{} [{}] Thread Id [{}] with handle id [{}]", | ||||||
| @ -47,14 +52,12 @@ public class ManagedHandleInvocationHandler<T> implements InvocationHandler { | |||||||
|             Thread.currentThread().getId(), |             Thread.currentThread().getId(), | ||||||
|             handle.hashCode()); |             handle.hashCode()); | ||||||
| 
 | 
 | ||||||
|     if (CollectionDAO.class.isAssignableFrom(underlying) && method.isAnnotationPresent(CreateSqlObject.class)) { |         dao = handle.attach(underlying); | ||||||
|       return getWrappedInstanceForDaoClass(method.getReturnType()); |  | ||||||
|       } else { |       } else { | ||||||
|       if (!JdbiTransactionManager.getInstance().containsHandle(handle.hashCode())) { |  | ||||||
|         // This is non-transactional request |         // This is non-transactional request | ||||||
|         handle.getConnection().setAutoCommit(true); |         dao = JdbiUnitOfWorkProvider.getInstance().getHandleManager().getJdbi().onDemand(underlying); | ||||||
|       } |       } | ||||||
|       Object dao = handle.attach(underlying); | 
 | ||||||
|       try { |       try { | ||||||
|         return method.invoke(dao, args); |         return method.invoke(dao, args); | ||||||
|       } catch (Exception ex) { |       } catch (Exception ex) { | ||||||
|  | |||||||
| @ -30,6 +30,11 @@ class RequestScopedJdbiHandleManager implements JdbiHandleManager { | |||||||
|     return handle; |     return handle; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   @Override | ||||||
|  |   public boolean handleExists() { | ||||||
|  |     return threadLocal.get() != null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   @Override |   @Override | ||||||
|   public void clear() { |   public void clear() { | ||||||
|     Handle handle = threadLocal.get(); |     Handle handle = threadLocal.get(); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Mohit Yadav
						Mohit Yadav