Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • engine engine
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 28
    • Issues 28
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
    • Model experiments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • AURAAURA
  • engineengine
  • Issues
  • #90

Short-lived database sessions cause exceptions when fetching schedules

Since the introduction of short-lived sessions (!9 (merged)) following exceptions are thrown when fetching schedules from Steering.

This happens with both PostgreSQL and SQLite.

PlaylistEntryMetadata

    self._target(*self._args, **self._kwargs)
  File "/home/david/code/aura/engine/src/events.py", line 188, in func
    self.scheduler.on_ready()
  File "/home/david/code/aura/engine/src/scheduling/scheduler.py", line 135, in on_ready
    self.play_active_entry()
  File "/home/david/code/aura/engine/src/scheduling/scheduler.py", line 189, in play_active_entry
    active_entry = self.programme.get_current_entry()
  File "/home/david/code/aura/engine/src/scheduling/programme.py", line 111, in get_current_entry
    self.refresh()
  File "/home/david/code/aura/engine/src/scheduling/programme.py", line 79, in refresh
    self.timeslots = self.programme_store.store_timeslots(response)
  File "/home/david/code/aura/engine/src/scheduling/programme.py", line 299, in store_timeslots
    self.store_playlist(timeslot_db, timeslot_db.playlist_id, timeslot["playlist"])
  File "/home/david/code/aura/engine/src/scheduling/programme.py", line 429, in store_playlist
    self.store_playlist_entries(timeslot_db, playlist_db, fetched_playlist)
  File "/home/david/code/aura/engine/src/scheduling/programme.py", line 471, in store_playlist_entries
    self.store_playlist_entry_metadata(entry_db, entry["file"]["metadata"])
  File "/home/david/code/aura/engine/src/scheduling/programme.py", line 533, in store_playlist_entry_metadata
    metadata_db = PlaylistEntryMetaData.select_metadata_for_entry(entry_db.artificial_id)
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/attributes.py", line 294, in __get__
    return self.impl.get(instance_state(instance), dict_)
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/attributes.py", line 725, in get
    value = state._load_expired(state, passive)
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/state.py", line 652, in _load_expired
    self.manager.deferred_scalar_loader(self, toload)
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/loading.py", line 942, in load_scalar_attributes
    raise orm_exc.DetachedInstanceError(
sqlalchemy.orm.exc.DetachedInstanceError: Instance <PlaylistEntry at 0x7f72e66a3cd0> is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: http://sqlalche.me/e/13/bhk3)

Playlist

Exception has occurred: DetachedInstanceError
Parent instance <Timeslot at 0x7f339057aaf0> is not bound to a Session; lazy load operation of attribute 'playlist' cannot proceed (Background on this error at: http://sqlalche.me/e/13/bhk3)
  File "/home/david/code/aura/engine/src/scheduling/utils.py", line 201, in get_ascii_timeslots
    if active_timeslot.playlist:
  File "/home/david/code/aura/engine/src/scheduling/scheduler.py", line 132, in on_ready
    self.logger.info(self.timeslot_renderer.get_ascii_timeslots())
  File "/home/david/code/aura/engine/src/events.py", line 188, in func
    self.scheduler.on_ready()
Edited Jan 21, 2022 by David Trattnig
Assignee
Assign to
Time tracking