Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FIX] InterfaceError: connection already closed #974

Open
thinker007 opened this issue Nov 12, 2024 · 5 comments
Open

[FIX] InterfaceError: connection already closed #974

thinker007 opened this issue Nov 12, 2024 · 5 comments
Labels
fix Fix something that isn't working as expected

Comments

@thinker007
Copy link

After running for 9 days we got this error

From the error stack trace, this is a PostgreSQL database connection issue. The main error is InterfaceError: connection already closed, indicating that the code is trying to use a database connection that has already been closed. The main possible causes are:

Database connection timeout
Database connection unexpectedly closed
Incorrect connection pool configuration
Connection management issues in asynchronous environments

uvicorn.error: Exception in ASGI h11_impl.py:411
application

                       ╭─ Traceback (most recent call last─╮                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/backends/base/ba │                
                       │ se.py:294 in _cursor              │                
                       │                                   │                
                       │   291 │   │   self.close_if_healt │                
                       │   292 │   │   self.ensure_connect │                
                       │   293 │   │   with self.wrap_data │                
                       │ ❱ 294 │   │   │   return self._pr │                
                       │   295 │                           │                
                       │   296 │   def _commit(self):      │                
                       │   297 │   │   if self.connection  │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/utils/asyncio.py:26 │                
                       │  in inner                         │                
                       │                                   │                
                       │   23 │   │   │   │   if not os.en │                
                       │   24 │   │   │   │   │   raise Sy │                
                       │   25 │   │   │   # Pass onward.   │                
                       │ ❱ 26 │   │   │   return func(*arg │                
                       │   27 │   │                        │                
                       │   28 │   │   return inner         │                
                       │   29                              │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/backends/postgre │                
                       │ sql/base.py:332 in create_cursor  │                
                       │                                   │                
                       │   329 │   │   │   │   name, scrol │                
                       │   330 │   │   │   )               │                
                       │   331 │   │   else:               │                
                       │ ❱ 332 │   │   │   cursor = self.c │                
                       │   333 │   │                       │                
                       │   334 │   │   if is_psycopg3:     │                
                       │   335 │   │   │   # Register the  │                
                       ╰───────────────────────────────────╯                
                       InterfaceError: connection already                   
                       closed                                               
                                                                            
                       The above exception was the direct                   
                       cause of the following exception:                    
                                                                            
                       ╭─ Traceback (most recent call last─╮                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/uvicorn/protocols/http/h11 │                
                       │ _impl.py:406 in run_asgi          │                
                       │                                   │                
                       │   403 │   # ASGI exception wrappe │                
                       │   404 │   async def run_asgi(self │                
                       │   405 │   │   try:                │                
                       │ ❱ 406 │   │   │   result = await  │                
                       │   407 │   │   │   │   self.scope, │                
                       │   408 │   │   │   )               │                
                       │   409 │   │   except BaseExceptio │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/uvicorn/middleware/proxy_h │                
                       │ eaders.py:70 in __call__          │                
                       │                                   │                
                       │   67 │   │   │   │   │   port = 0 │                
                       │   68 │   │   │   │   │   scope["c │                
                       │   69 │   │                        │                
                       │ ❱ 70 │   │   return await self.ap │                
                       │   71                              │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/fastapi/applications.py:10 │                
                       │ 54 in __call__                    │                
                       │                                   │                
                       │   1051 │   async def __call__(sel │                
                       │   1052 │   │   if self.root_path: │                
                       │   1053 │   │   │   scope["root_pa │                
                       │ ❱ 1054 │   │   await super().__ca │                
                       │   1055 │                          │                
                       │   1056 │   def add_api_route(     │                
                       │   1057 │   │   self,              │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/applications.py: │                
                       │ 113 in __call__                   │                
                       │                                   │                
                       │   110 │   │   scope["app"] = self │                
                       │   111 │   │   if self.middleware_ │                
                       │   112 │   │   │   self.middleware │                
                       │ ❱ 113 │   │   await self.middlewa │                
                       │   114 │                           │                
                       │   115 │   def on_event(self, even │                
                       │   116 │   │   return self.router. │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/error │                
                       │ s.py:187 in __call__              │                
                       │                                   │                
                       │   184 │   │   │   # We always con │                
                       │   185 │   │   │   # This allows s │                
                       │   186 │   │   │   # to optionally │                
                       │ ❱ 187 │   │   │   raise exc       │                
                       │   188 │                           │                
                       │   189 │   def format_line(self, i │                
                       │       str:                        │                
                       │   190 │   │   values = {          │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/error │                
                       │ s.py:165 in __call__              │                
                       │                                   │                
                       │   162 │   │   │   await send(mess │                
                       │   163 │   │                       │                
                       │   164 │   │   try:                │                
                       │ ❱ 165 │   │   │   await self.app( │                
                       │   166 │   │   except Exception as │                
                       │   167 │   │   │   request = Reque │                
                       │   168 │   │   │   if self.debug:  │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/sessi │                
                       │ ons.py:85 in __call__             │                
                       │                                   │                
                       │   82 │   │   │   │   │   headers. │                
                       │   83 │   │   │   await send(messa │                
                       │   84 │   │                        │                
                       │ ❱ 85 │   │   await self.app(scope │                
                       │   86                              │                
                       │                                   │                
                       │ /app/src/khoj/configure.py:372 in │                
                       │ __call__                          │                
                       │                                   │                
                       │   369 │   │   async def __call__( │                
                       │   370 │   │   │   if scope["type" │                
                       │   371 │   │   │   │   scope["path │                
                       │ ❱ 372 │   │   │   await self.app( │                
                       │   373 │   │                       │                
                       │   374 │   │   def __init__(self,  │                
                       │   375 │   │   │   super().__init_ │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/authe │                
                       │ ntication.py:48 in __call__       │                
                       │                                   │                
                       │   45 │   │   if auth_result is No │                
                       │   46 │   │   │   auth_result = Au │                
                       │   47 │   │   scope["auth"], scope │                
                       │ ❱ 48 │   │   await self.app(scope │                
                       │   49 │                            │                
                       │   50 │   @staticmethod            │                
                       │   51 │   def default_on_error(con │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/base. │                
                       │ py:187 in __call__                │                
                       │                                   │                
                       │   184 │   │                       │                
                       │   185 │   │   with collapse_excgr │                
                       │   186 │   │   │   async with anyi │                
                       │ ❱ 187 │   │   │   │   response =  │                
                       │   188 │   │   │   │   await respo │                
                       │   189 │   │   │   │   response_se │                
                       │   190                             │                
                       │                                   │                
                       │ /app/src/khoj/configure.py:86 in  │                
                       │ dispatch                          │                
                       │                                   │                
                       │    83 │   │   await run_in_thread │                
                       │    84 │   │   await sync_to_async │                
                       │    85 │   │   try:                │                
                       │ ❱  86 │   │   │   response = awai │                
                       │    87 │   │   finally:            │                
                       │    88 │   │   │   # in tests, use │                
                       │    89 │   │   │   if getattr(sett │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/base. │                
                       │ py:163 in call_next               │                
                       │                                   │                
                       │   160 │   │   │   │   │   message │                
                       │   161 │   │   │   except anyio.En │                
                       │   162 │   │   │   │   if app_exc  │                
                       │ ❱ 163 │   │   │   │   │   raise a │                
                       │   164 │   │   │   │   raise Runti │                
                       │   165 │   │   │                   │                
                       │   166 │   │   │   assert message[ │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/base. │                
                       │ py:149 in coro                    │                
                       │                                   │                
                       │   146 │   │   │   │               │                
                       │   147 │   │   │   │   async with  │                
                       │   148 │   │   │   │   │   try:    │                
                       │ ❱ 149 │   │   │   │   │   │   awa │                
                       │   150 │   │   │   │   │   except  │                
                       │   151 │   │   │   │   │   │   app │                
                       │   152                             │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/cors. │                
                       │ py:85 in __call__                 │                
                       │                                   │                
                       │    82 │   │   origin = headers.ge │                
                       │    83 │   │                       │                
                       │    84 │   │   if origin is None:  │                
                       │ ❱  85 │   │   │   await self.app( │                
                       │    86 │   │   │   return          │                
                       │    87 │   │                       │                
                       │    88 │   │   if method == "OPTIO │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/middleware/excep │                
                       │ tions.py:62 in __call__           │                
                       │                                   │                
                       │   59 │   │   else:                │                
                       │   60 │   │   │   conn = WebSocket │                
                       │   61 │   │                        │                
                       │ ❱ 62 │   │   await wrap_app_handl │                
                       │   63 │                            │                
                       │   64 │   def http_exception(self, │                
                       │   65 │   │   assert isinstance(ex │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/_exception_handl │                
                       │ er.py:53 in wrapped_app           │                
                       │                                   │                
                       │   50 │   │   │   │   handler = _l │                
                       │   51 │   │   │                    │                
                       │   52 │   │   │   if handler is No │                
                       │ ❱ 53 │   │   │   │   raise exc    │                
                       │   54 │   │   │                    │                
                       │   55 │   │   │   if response_star │                
                       │   56 │   │   │   │   raise Runtim │                
                       │      started.") from exc          │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/_exception_handl │                
                       │ er.py:42 in wrapped_app           │                
                       │                                   │                
                       │   39 │   │   │   await send(messa │                
                       │   40 │   │                        │                
                       │   41 │   │   try:                 │                
                       │ ❱ 42 │   │   │   await app(scope, │                
                       │   43 │   │   except Exception as  │                
                       │   44 │   │   │   handler = None   │                
                       │   45                              │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/routing.py:715   │                
                       │ in __call__                       │                
                       │                                   │                
                       │   712 │   │   """                 │                
                       │   713 │   │   The main entry poin │                
                       │   714 │   │   """                 │                
                       │ ❱ 715 │   │   await self.middlewa │                
                       │   716 │                           │                
                       │   717 │   async def app(self, sco │                
                       │   718 │   │   assert scope["type" │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/routing.py:735   │                
                       │ in app                            │                
                       │                                   │                
                       │   732 │   │   │   match, child_sc │                
                       │   733 │   │   │   if match == Mat │                
                       │   734 │   │   │   │   scope.updat │                
                       │ ❱ 735 │   │   │   │   await route │                
                       │   736 │   │   │   │   return      │                
                       │   737 │   │   │   elif match == M │                
                       │   738 │   │   │   │   partial = r │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/routing.py:288   │                
                       │ in handle                         │                
                       │                                   │                
                       │   285 │   │   │   │   response =  │                
                       │       headers=headers)            │                
                       │   286 │   │   │   await response( │                
                       │   287 │   │   else:               │                
                       │ ❱ 288 │   │   │   await self.app( │                
                       │   289 │                           │                
                       │   290 │   def __eq__(self, other: │                
                       │   291 │   │   return (            │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/routing.py:76 in │                
                       │ app                               │                
                       │                                   │                
                       │    73 │   │   │   response = awai │                
                       │    74 │   │   │   await response( │                
                       │    75 │   │                       │                
                       │ ❱  76 │   │   await wrap_app_hand │                
                       │    77 │                           │                
                       │    78 │   return app              │                
                       │    79                             │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/_exception_handl │                
                       │ er.py:53 in wrapped_app           │                
                       │                                   │                
                       │   50 │   │   │   │   handler = _l │                
                       │   51 │   │   │                    │                
                       │   52 │   │   │   if handler is No │                
                       │ ❱ 53 │   │   │   │   raise exc    │                
                       │   54 │   │   │                    │                
                       │   55 │   │   │   if response_star │                
                       │   56 │   │   │   │   raise Runtim │                
                       │      started.") from exc          │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/_exception_handl │                
                       │ er.py:42 in wrapped_app           │                
                       │                                   │                
                       │   39 │   │   │   await send(messa │                
                       │   40 │   │                        │                
                       │   41 │   │   try:                 │                
                       │ ❱ 42 │   │   │   await app(scope, │                
                       │   43 │   │   except Exception as  │                
                       │   44 │   │   │   handler = None   │                
                       │   45                              │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/routing.py:73 in │                
                       │ app                               │                
                       │                                   │                
                       │    70 │   │   request = Request(s │                
                       │    71 │   │                       │                
                       │    72 │   │   async def app(scope │                
                       │ ❱  73 │   │   │   response = awai │                
                       │    74 │   │   │   await response( │                
                       │    75 │   │                       │                
                       │    76 │   │   await wrap_app_hand │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/fastapi/routing.py:301 in  │                
                       │ app                               │                
                       │                                   │                
                       │    298 │   │   │   │   )          │                
                       │    299 │   │   │   │   errors = s │                
                       │    300 │   │   │   │   if not err │                
                       │ ❱  301 │   │   │   │   │   raw_re │                
                       │    302 │   │   │   │   │   │   de │                
                       │    303 │   │   │   │   │   │   va │                
                       │    304 │   │   │   │   │   │   is │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/fastapi/routing.py:212 in  │                
                       │ run_endpoint_function             │                
                       │                                   │                
                       │    209 │   assert dependant.call  │                
                       │    210 │                          │                
                       │    211 │   if is_coroutine:       │                
                       │ ❱  212 │   │   return await depen │                
                       │    213 │   else:                  │                
                       │    214 │   │   return await run_i │                
                       │    215                            │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/starlette/authentication.p │                
                       │ y:75 in async_wrapper             │                
                       │                                   │                
                       │    72 │   │   │   │   │   │   nex │                
                       │    73 │   │   │   │   │   │   ret │                
                       │    74 │   │   │   │   │   raise H │                
                       │ ❱  75 │   │   │   │   return awai │                
                       │    76 │   │   │                   │                
                       │    77 │   │   │   return async_wr │                
                       │    78                             │                
                       │                                   │                
                       │ /app/src/khoj/routers/api_chat.py │                
                       │ :1201 in chat                     │                
                       │                                   │                
                       │   1198 │   ## Non-Streaming Text  │                
                       │   1199 │   else:                  │                
                       │   1200 │   │   response_iterator  │                
                       │ ❱ 1201 │   │   response_data = aw │                
                       │   1202 │   │   return Response(co │                
                       │        media_type="application/js │                
                       │   1203                            │                
                       │                                   │                
                       │ /app/src/khoj/routers/helpers.py: │                
                       │ 1763 in read_chat_stream          │                
                       │                                   │                
                       │   1760 │   event_delimiter = "␃🔚 │                
                       │   1761 │   buffer = ""            │                
                       │   1762 │                          │                
                       │ ❱ 1763 │   async for chunk in res │                
                       │   1764 │   │   # Start buffering  │                
                       │   1765 │   │   buffer += chunk    │                
                       │   1766                            │                
                       │                                   │                
                       │ /app/src/khoj/routers/api_chat.py │                
                       │ :1154 in event_generator          │                
                       │                                   │                
                       │   1151 │   │   ## Generate Text O │                
                       │   1152 │   │   async for result i │                
                       │        response**"):              │                
                       │   1153 │   │   │   yield result   │                
                       │ ❱ 1154 │   │   llm_response, chat │                
                       │   1155 │   │   │   defiltered_que │                
                       │   1156 │   │   │   meta_log,      │                
                       │   1157 │   │   │   conversation,  │                
                       │                                   │                
                       │ /app/src/khoj/routers/helpers.py: │                
                       │ 249 in agenerate_chat_response    │                
                       │                                   │                
                       │    246                            │                
                       │    247 async def agenerate_chat_r │                
                       │    248 │   loop = asyncio.get_eve │                
                       │ ❱  249 │   return await loop.run_ │                
                       │    250                            │                
                       │    251                            │                
                       │    252 async def acreate_title_fr │                
                       │                                   │                
                       │ /usr/lib/python3.10/concurrent/fu │                
                       │ tures/thread.py:58 in run         │                
                       │                                   │                
                       │    55 │   │   │   return          │                
                       │    56 │   │                       │                
                       │    57 │   │   try:                │                
                       │ ❱  58 │   │   │   result = self.f │                
                       │    59 │   │   except BaseExceptio │                
                       │    60 │   │   │   self.future.set │                
                       │    61 │   │   │   # Break a refer │                
                       │                                   │                
                       │ /app/src/khoj/routers/helpers.py: │                
                       │ 1141 in generate_chat_response    │                
                       │                                   │                
                       │   1138 │   logger.debug(f"Convers │                
                       │   1139 │                          │                
                       │   1140 │   metadata = {}          │                
                       │ ❱ 1141 │   agent = AgentAdapters. │                
                       │        conversation.agent else No │                
                       │   1142 │   query_to_run = q       │                
                       │   1143 │   if meta_research:      │                
                       │   1144 │   │   query_to_run = f"A │                
                       │                                   │                
                       │ /app/src/khoj/database/adapters/_ │                
                       │ _init__.py:710 in                 │                
                       │ get_conversation_agent_by_id      │                
                       │                                   │                
                       │    707 │                          │                
                       │    708 │   @staticmethod          │                
                       │    709 │   def get_conversation_a │                
                       │ ❱  710 │   │   agent = Agent.obje │                
                       │    711 │   │   if agent == AgentA │                
                       │    712 │   │   │   # If the agent │                
                       │        default application code b │                
                       │    713 │   │   │   return None    │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/models/query.py: │                
                       │ 1097 in first                     │                
                       │                                   │                
                       │   1094 │   │   else:              │                
                       │   1095 │   │   │   self._check_or │                
                       │   1096 │   │   │   queryset = sel │                
                       │ ❱ 1097 │   │   for obj in queryse │                
                       │   1098 │   │   │   return obj     │                
                       │   1099 │                          │                
                       │   1100 │   async def afirst(self) │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/models/query.py: │                
                       │ 400 in __iter__                   │                
                       │                                   │                
                       │    397 │   │   │   3. self.iterat │                
                       │    398 │   │   │      - Responsib │                
                       │    399 │   │   """                │                
                       │ ❱  400 │   │   self._fetch_all()  │                
                       │    401 │   │   return iter(self._ │                
                       │    402 │                          │                
                       │    403 │   def __aiter__(self):   │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/models/query.py: │                
                       │ 1928 in _fetch_all                │                
                       │                                   │                
                       │   1925 │                          │                
                       │   1926 │   def _fetch_all(self):  │                
                       │   1927 │   │   if self._result_ca │                
                       │ ❱ 1928 │   │   │   self._result_c │                
                       │   1929 │   │   if self._prefetch_ │                
                       │   1930 │   │   │   self._prefetch │                
                       │   1931                            │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/models/query.py: │                
                       │ 91 in __iter__                    │                
                       │                                   │                
                       │     88 │   │   compiler = queryse │                
                       │     89 │   │   # Execute the quer │                
                       │     90 │   │   # and annotations. │                
                       │ ❱   91 │   │   results = compiler │                
                       │     92 │   │   │   chunked_fetch= │                
                       │     93 │   │   )                  │                
                       │     94 │   │   select, klass_info │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/models/sql/compi │                
                       │ ler.py:1560 in execute_sql        │                
                       │                                   │                
                       │   1557 │   │   if chunked_fetch:  │                
                       │   1558 │   │   │   cursor = self. │                
                       │   1559 │   │   else:              │                
                       │ ❱ 1560 │   │   │   cursor = self. │                
                       │   1561 │   │   try:               │                
                       │   1562 │   │   │   cursor.execute │                
                       │   1563 │   │   except Exception:  │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/utils/asyncio.py:26 │                
                       │  in inner                         │                
                       │                                   │                
                       │   23 │   │   │   │   if not os.en │                
                       │   24 │   │   │   │   │   raise Sy │                
                       │   25 │   │   │   # Pass onward.   │                
                       │ ❱ 26 │   │   │   return func(*arg │                
                       │   27 │   │                        │                
                       │   28 │   │   return inner         │                
                       │   29                              │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/backends/base/ba │                
                       │ se.py:316 in cursor               │                
                       │                                   │                
                       │   313 │   @async_unsafe           │                
                       │   314 │   def cursor(self):       │                
                       │   315 │   │   """Create a cursor, │                
                       │ ❱ 316 │   │   return self._cursor │                
                       │   317 │                           │                
                       │   318 │   @async_unsafe           │                
                       │   319 │   def commit(self):       │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/backends/base/ba │                
                       │ se.py:293 in _cursor              │                
                       │                                   │                
                       │   290 │   def _cursor(self, name= │                
                       │   291 │   │   self.close_if_healt │                
                       │   292 │   │   self.ensure_connect │                
                       │ ❱ 293 │   │   with self.wrap_data │                
                       │   294 │   │   │   return self._pr │                
                       │   295 │                           │                
                       │   296 │   def _commit(self):      │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/utils.py:91 in   │                
                       │ __exit__                          │                
                       │                                   │                
                       │    88 │   │   │   │   # the conne │                
                       │    89 │   │   │   │   if dj_exc_t │                
                       │    90 │   │   │   │   │   self.wr │                
                       │ ❱  91 │   │   │   │   raise dj_ex │                
                       │    92 │                           │                
                       │    93 │   def __call__(self, func │                
                       │    94 │   │   # Note that we are  │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/backends/base/ba │                
                       │ se.py:294 in _cursor              │                
                       │                                   │                
                       │   291 │   │   self.close_if_healt │                
                       │   292 │   │   self.ensure_connect │                
                       │   293 │   │   with self.wrap_data │                
                       │ ❱ 294 │   │   │   return self._pr │                
                       │   295 │                           │                
                       │   296 │   def _commit(self):      │                
                       │   297 │   │   if self.connection  │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/utils/asyncio.py:26 │                
                       │  in inner                         │                
                       │                                   │                
                       │   23 │   │   │   │   if not os.en │                
                       │   24 │   │   │   │   │   raise Sy │                
                       │   25 │   │   │   # Pass onward.   │                
                       │ ❱ 26 │   │   │   return func(*arg │                
                       │   27 │   │                        │                
                       │   28 │   │   return inner         │                
                       │   29                              │                
                       │                                   │                
                       │ /usr/local/lib/python3.10/dist-pa │                
                       │ ckages/django/db/backends/postgre │                
                       │ sql/base.py:332 in create_cursor  │                
                       │                                   │                
                       │   329 │   │   │   │   name, scrol │                
                       │   330 │   │   │   )               │                
                       │   331 │   │   else:               │                
                       │ ❱ 332 │   │   │   cursor = self.c │                
                       │   333 │   │                       │                
                       │   334 │   │   if is_psycopg3:     │                
                       │   335 │   │   │   # Register the  │                
                       ╰───────────────────────────────────╯                
                       InterfaceError: connection already                   
                       closed        
@thinker007 thinker007 added the fix Fix something that isn't working as expected label Nov 12, 2024
@thinker007
Copy link
Author

Has any one else bumped into this bug?

@sabaimran
Copy link
Member

Hi @thinker007 , do you mind sharing a bit about your hosting environment? I'm guessing your instance has been running for a while? Is it on your own machine, or in a separate cloud?

Unfortunately, this is an issue we've been tracking for a while. It's going to require a bit of refactoring to address it. In the meantime, restarting the service is usually sufficient for avoiding the problem. In the longer term, we're going to have to update our ORM or API layer completely so that we don't encounter this problem. There's a discussion here which highlights some of the technical issues.

@thinker007
Copy link
Author

on my own machine a docker container run on unraid server

@sabaimran
Copy link
Member

@thinker007 , your database is also in a Docker container? Have you been using the Automations feature at all in your local instance?

@thinker007
Copy link
Author

@thinker007 , your database is also in a Docker container? Have you been using the Automations feature at all in your local instance?

yes my database is also in a Docker container

and I was not using the Automations feature at all

So the bug is very wield

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fix Fix something that isn't working as expected
Projects
None yet
Development

No branches or pull requests

2 participants