Hi Everyone! I am new to Prefect and I tried following the getting started guide. Got a`sqlalchemy.e...
s
Hi Everyone! I am new to Prefect and I tried following the getting started guide. Got a`sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked` error through the code here https://www.prefect.io/guide/blog/getting-started-prefect-2/. Is this a bug?
I am running the latest version (installed it today)
g
Can you post the screenshot
s
___ ___ ___ ___ ___ ___ _____
| _ \ _ \ __| __| __/ __|_   _|
|  _/   / _|| _|| _| (__  | |
|_| |_|_\___|_| |___\___| |_|
Configure Prefect to communicate with the server with:
prefect config set PREFECT_API_URL=<http://127.0.0.1:4200/api>
View the API reference documentation at <http://127.0.0.1:4200/docs>
Check out the dashboard at <http://127.0.0.1:4200>
01:15:03.345 | ERROR   | prefect.server.services.telemetry - Unexpected error in: OperationalError('(sqlite3.OperationalError) database is locked')
Traceback (most recent call last):
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context
self.dialect.do_execute(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute
cursor.execute(statement, parameters)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 113, in execute
self._adapt_connection._handle_exception(error)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 263, in _handle_exception
raise error
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 95, in execute
self.await_(_cursor.execute(operation, parameters))
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 125, in await_only
return current.driver.switch(awaitable)  # type: ignore[no-any-return]
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 185, in greenlet_spawn
value = await result
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/cursor.py", line 48, in execute
await self._execute(self._cursor.execute, sql, parameters)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/cursor.py", line 40, in _execute
return await self._conn._execute(fn, *args, **kwargs)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/core.py", line 133, in _execute
return await future
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/core.py", line 106, in run
result = function()
sqlite3.OperationalError: database is locked
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/prefect/server/services/loop_service.py", line 78, in start
await self.run_once()
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/prefect/server/services/telemetry.py", line 85, in run_once
await self._fetch_or_set_telemetry_session()
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/prefect/server/database/dependencies.py", line 119, in async_wrapper
return await fn(*args, **kwargs)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/prefect/server/services/telemetry.py", line 63, in _fetch_or_set_telemetry_session
await configuration.write_configuration(session, telemetry_session)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/prefect/server/database/dependencies.py", line 119, in async_wrapper
return await fn(*args, **kwargs)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/prefect/server/models/configuration.py", line 29, in write_configuration
await session.flush()
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/ext/asyncio/session.py", line 750, in flush
await greenlet_spawn(self.sync_session.flush, objects=objects)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn
result = context.switch(value)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 4142, in flush
self._flush(objects)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 4278, in _flush
transaction.rollback(_capture_exception=True)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 147, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 4238, in _flush
flush_context.execute()
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
rec.execute(self)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
util.preloaded.orm_persistence.save_obj(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
_emit_insert_statements(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 1226, in _emit_insert_statements
result = connection.execute(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1412, in execute
return meth(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 483, in _execute_on_connection
return connection._execute_clauseelement(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1635, in _execute_clauseelement
ret = self._execute_context(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1844, in _execute_context
return self._exec_single_context(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1984, in _exec_single_context
self._handle_dbapi_exception(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2339, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context
self.dialect.do_execute(
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute
cursor.execute(statement, parameters)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 113, in execute
self._adapt_connection._handle_exception(error)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 263, in _handle_exception
raise error
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 95, in execute
self.await_(_cursor.execute(operation, parameters))
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 125, in await_only
return current.driver.switch(awaitable)  # type: ignore[no-any-return]
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 185, in greenlet_spawn
value = await result
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/cursor.py", line 48, in execute
await self._execute(self._cursor.execute, sql, parameters)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/cursor.py", line 40, in _execute
return await self._conn._execute(fn, *args, **kwargs)
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/core.py", line 133, in _execute
return await future
File "/home/shash/miniconda3/envs/etl/lib/python3.8/site-packages/aiosqlite/core.py", line 106, in run
result = function()
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked
[SQL: INSERT INTO configuration ("key", value, id, created, updated) VALUES (:key, :value, :id, :created, :updated)]
[parameters: {'key': 'TELEMETRY_SESSION', 'value': '{"session_id": "a78015fd-8fc3-4837-92d9-f86fc69b1541", "session_start_timestamp": "2023-06-12T01:15:03.330266-07:00"}', 'id': 'd115eba4-1597-415d-ba85-55139705008c', 'created': '2023-06-12 08:15:03.335984', 'updated': '2023-06-12 08:15:03.335993'}]
(Background on this error at: <https://sqlalche.me/e/20/e3q8>)
j
Sorry to hear that. What does
prefect version
show?
What command did you get the problem on? If you retry the same command now does it work? This should be a temporary issue and it should automatically retry.
Do you have any other information that would be helpful for a reproduction as we try to track down why this is ocurring?
z
Fwiw this looks like a
prefect server start
command and this error is safe to ignore because it is just a background service
s
@Jeff Hale I am running version 2.10.13 . This happened when I tried running the flow through the deployments window on the server (at this point in time a flow had been created, tested, and saved as a deployment). I think the flow was not able to save anything to the database. But I tried some alternate code and created a new pipeline with it. Followed the same process and it worked. Not sure if this was an issue only in the tutorial code.
👍 1
🙏 1
g
I too encountered the same issue as sqloperationalerror, database is locked. For this delete all the deployments and repoint the host database following https://docs.prefect.io/2.10.13/host/#configuring-a-postgresql-database , and run the prefect server that should work
s
Thanks! will try this too
g
is it working ?
1365 Views