engine issueshttps://gitlab.servus.at/aura/engine/-/issues2022-01-21T17:01:18+01:00https://gitlab.servus.at/aura/engine/-/issues/75Issues with DB Session due to various threads accessing it (MySQL, MariaDB)2022-01-21T17:01:18+01:00David TrattnigIssues with DB Session due to various threads accessing it (MySQL, MariaDB)This is happening in not clearly predictable scenarios. I've noted it for example from within the `TrackService` plugin.
```
2021-05-05 10:40:15,176:AuraEngine:INFO - Posting playlog to Engine API... - [trackservice.py:167-store_trackse...This is happening in not clearly predictable scenarios. I've noted it for example from within the `TrackService` plugin.
```
2021-05-05 10:40:15,176:AuraEngine:INFO - Posting playlog to Engine API... - [trackservice.py:167-store_trackservice()]
Exception in thread Thread-688:
Traceback (most recent call last):
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1211, in _execute_context
context = constructor(dialect, self, conn, *args)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 803, in _init_compiled
self.cursor = self.create_cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 1159, in create_cursor
return self._dbapi_connection.cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 1000, in cursor
return self.connection.cursor(*args, **kwargs)
AttributeError: 'NoneType' object has no attribute 'cursor'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/home/david/Code/aura/engine/src/events.py", line 253, in func
self.call_event("on_metadata", data)
File "/home/david/Code/aura/engine/src/events.py", line 148, in call_event
method(*args)
File "/home/david/Code/aura/engine/src/plugins/trackservice.py", line 157, in on_metadata
self.store_clock_info(data)
File "/home/david/Code/aura/engine/src/plugins/trackservice.py", line 200, in store_clock_info
if e.meta_data:
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 287, in __get__
return self.impl.get(instance_state(instance), dict_)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 723, in get
value = self.callable_(state, passive)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 749, in _load_for_state
return self._emit_lazyload(
File "<string>", line 1, in <lambda>
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 890, in _emit_lazyload
q(session)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/ext/baked.py", line 545, in all
return list(self)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/ext/baked.py", line 445, in __iter__
return q._execute_and_instances(context)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3506, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1020, in execute
return meth(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1133, in _execute_clauseelement
ret = self._execute_context(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1213, in _execute_context
self._handle_dbapi_exception(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1517, in _handle_dbapi_exception
util.raise_(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1211, in _execute_context
context = constructor(dialect, self, conn, *args)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 803, in _init_compiled
self.cursor = self.create_cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 1159, in create_cursor
return self._dbapi_connection.cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 1000, in cursor
return self.connection.cursor(*args, **kwargs)
sqlalchemy.exc.StatementError: (builtins.AttributeError) 'NoneType' object has no attribute 'cursor'
[SQL: SELECT playlist_entry_metadata.artificial_id AS playlist_entry_metadata_artificial_id, playlist_entry_metadata.artificial_entry_id AS playlist_entry_metadata_artificial_entry_id, playlist_entry_metadata.artist AS playlist_entry_metadata_artist, playlist_entry_metadata.title AS playlist_entry_metadata_title, playlist_entry_metadata.album AS playlist_entry_metadata_album
FROM playlist_entry_metadata
WHERE %s = playlist_entry_metadata.artificial_entry_id]
[parameters: [{'%(140296918919056 param)s': 354}]]
2021-05-05 10:40:15,669:AuraEngine:INFO - [ECI] Event 'on_metadata' issued successfully - [control.py:164-process()]
2021-05-05 10:40:15,670:AuraEngine:INFO - Found no entry in the recent history which matches the given source '../audio/station2/01 Journey in Satchidananda.mp3' - [trackservice.py:420-resolve_entry()]
2021-05-05 10:40:15,670:AuraEngine:INFO - Posting playlog to Engine API... - [trackservice.py:167-store_trackservice()]
Exception in thread Thread-689:
Traceback (most recent call last):
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1211, in _execute_context
context = constructor(dialect, self, conn, *args)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 803, in _init_compiled
self.cursor = self.create_cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 1159, in create_cursor
return self._dbapi_connection.cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 1000, in cursor
return self.connection.cursor(*args, **kwargs)
AttributeError: 'NoneType' object has no attribute 'cursor'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/home/david/Code/aura/engine/src/events.py", line 253, in func
self.call_event("on_metadata", data)
File "/home/david/Code/aura/engine/src/events.py", line 148, in call_event
method(*args)
File "/home/david/Code/aura/engine/src/plugins/trackservice.py", line 157, in on_metadata
self.store_clock_info(data)
File "/home/david/Code/aura/engine/src/plugins/trackservice.py", line 200, in store_clock_info
if e.meta_data:
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 287, in __get__
return self.impl.get(instance_state(instance), dict_)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 723, in get
value = self.callable_(state, passive)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 749, in _load_for_state
return self._emit_lazyload(
File "<string>", line 1, in <lambda>
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 890, in _emit_lazyload
q(session)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/ext/baked.py", line 545, in all
return list(self)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/ext/baked.py", line 445, in __iter__
return q._execute_and_instances(context)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3506, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1020, in execute
return meth(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1133, in _execute_clauseelement
ret = self._execute_context(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1213, in _execute_context
self._handle_dbapi_exception(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1517, in _handle_dbapi_exception
util.raise_(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1211, in _execute_context
context = constructor(dialect, self, conn, *args)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 803, in _init_compiled
self.cursor = self.create_cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 1159, in create_cursor
return self._dbapi_connection.cursor()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 1000, in cursor
return self.connection.cursor(*args, **kwargs)
sqlalchemy.exc.StatementError: (builtins.AttributeError) 'NoneType' object has no attribute 'cursor'
[SQL: SELECT playlist_entry_metadata.artificial_id AS playlist_entry_metadata_artificial_id, playlist_entry_metadata.artificial_entry_id AS playlist_entry_metadata_artificial_entry_id, playlist_entry_metadata.artist AS playlist_entry_metadata_artist, playlist_entry_metadata.title AS playlist_entry_metadata_title, playlist_entry_metadata.album AS playlist_entry_metadata_album
FROM playlist_entry_metadata
WHERE %s = playlist_entry_metadata.artificial_entry_id]
[parameters: [{'%(140296918919056 param)s': 354}]]
```
After that the DB connection appears to generally broken, making it impossible to fetch further timeslots for example.
```
Unhandled error while fetching & scheduling new programme! ((builtins.AttributeError) 'NoneType' object has no attribute 'cursor'
[SQL: SELECT timeslot.id AS timeslot_id_1, timeslot.playlist_id AS timeslot_playlist_id, timeslot.default_schedule_playlist_id AS timeslot_default_schedule_playlist_id, timeslot.default_show_playlist_id AS timeslot_default_show_playlist_id, timeslot.schedule_fallback_id AS timeslot_schedule_fallback_id, timeslot.show_fallback_id AS timeslot_show_fallback_id, timeslot.station_fallback_id AS timeslot_station_fallback_id, timeslot.timeslot_start AS timeslot_timeslot_start, timeslot.timeslot_end AS timeslot_timeslot_end, timeslot.timeslot_id AS timeslot_timeslot_id, timeslot.show_id AS timeslot_show_id, timeslot.show_name AS timeslot_show_name, timeslot.show_hosts AS timeslot_show_hosts, timeslot.funding_category AS timeslot_funding_category, timeslot.comment AS timeslot_comment, timeslot.languages AS timeslot_languages, timeslot.type AS timeslot_type, timeslot.category AS timeslot_category, timeslot.topic AS timeslot_topic, timeslot.musicfocus AS timeslot_musicfocus, timeslot.is_repetition AS timeslot_is_repetition
FROM timeslot
WHERE timeslot.timeslot_start >= (builtins.AttributeError) 'NoneType' object has no attribute 'cursor'
[SQL: SELECT timeslot.id AS timeslot_id_1, timeslot.playlist_id AS timeslot_playlist_id, timeslot.default_schedule_playlist_id AS timeslot_default_schedule_playlist_id, timeslot.default_show_playlist_id AS timeslot_default_show_playlist_id, timeslot.schedule_fallback_id AS timeslot_schedule_fallback_id, timeslot.show_fallback_id AS timeslot_show_fallback_id, timeslot.station_fallback_id AS timeslot_station_fallback_id, timeslot.timeslot_start AS timeslot_timeslot_start, timeslot.timeslot_end AS timeslot_timeslot_end, timeslot.timeslot_id AS timeslot_timeslot_id, timeslot.show_id AS timeslot_show_id, timeslot.show_name AS timeslot_show_name, timeslot.show_hosts AS timeslot_show_hosts, timeslot.funding_category AS timeslot_funding_category, timeslot.comment AS timeslot_comment, timeslot.languages AS timeslot_languages, timeslot.type AS timeslot_type, timeslot.category AS timeslot_category, timeslot.topic AS timeslot_topic, timeslot.musicfocus AS timeslot_musicfocus, timeslot.is_repetition AS timeslot_is_repetition
FROM timeslot
WHERE timeslot.timeslot_start >= %s ORDER BY timeslot.timeslot_start]
[parameters: [immutabledict({})]] ORDER BY timeslot.timeslot_start]
[parameters: [immutabledict({})]])
```1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/33Less verbose error logs when connection to Engine API fails2022-01-21T19:33:45+01:00David TrattnigLess verbose error logs when connection to Engine API fails1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/123Less verbose logging when result from Steering playout endpoint cannot be parsed2023-06-06T21:11:39+02:00David TrattnigLess verbose logging when result from Steering playout endpoint cannot be parsedCurrently the Steering playout endpoint returns Error `500`. Deal with that more nicely.Currently the Steering playout endpoint returns Error `500`. Deal with that more nicely.1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/141Line-in selection throws error2024-02-21T10:21:56+01:00Chris PastlLine-in selection throws errorError when selecting a line-in source in dashboard:
```
engine | 2024-02-20T21:40:39.483662146Z self.engine.player.preload(entries[0])
engine | 2024-02-20T21:40:39.483667862Z File "/srv/src/aura_engine/engine.py", line 300, in pr...Error when selecting a line-in source in dashboard:
```
engine | 2024-02-20T21:40:39.483662146Z self.engine.player.preload(entries[0])
engine | 2024-02-20T21:40:39.483667862Z File "/srv/src/aura_engine/engine.py", line 300, in preload
engine | 2024-02-20T21:40:39.483760076Z channel_name = self.resource_map.live_channel_for_resource(entry.source)
engine | 2024-02-20T21:40:39.483765598Z TypeError: ResourceMapping.live_channel_for_resource() takes 1 positional argument but 2 were given
```1.0-alpha3 โ Playful Platypus โถ๏ธ๐ฆฆChris PastlChris Pastlhttps://gitlab.servus.at/aura/engine/-/issues/72Liquidsoap Server as separate "engine-core" project to improve container modu...2021-11-19T23:16:36+01:00David TrattnigLiquidsoap Server as separate "engine-core" project to improve container modularizationAura 0.9David TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/81Live channel doesn't get selected properly2021-07-08T18:12:31+02:00David TrattnigLive channel doesn't get selected properlyAura 0.9David TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/84Make FallbackManager a service in the engine module2022-01-27T19:02:27+01:00David TrattnigMake FallbackManager a service in the engine module- Remove from scheduler
- New class to be named "PlayoutState" or other more generic representation
- Check dependencies such as TrackService and translation of playlist types- Remove from scheduler
- New class to be named "PlayoutState" or other more generic representation
- Check dependencies such as TrackService and translation of playlist types1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/140Merge and test code changes on main to the orm-less-scheduling branch2023-11-28T14:49:22+01:00David TrattnigMerge and test code changes on main to the orm-less-scheduling branchSince many refactorings have happened, this could take a bit longer.
After things are fine, merge it to main again.Since many refactorings have happened, this could take a bit longer.
After things are fine, merge it to main again.1.0-alpha3 โ Playful Platypus โถ๏ธ๐ฆฆDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/40Next show schedules do not appear as schedule timers anymore2020-10-30T15:27:53+01:00David TrattnigNext show schedules do not appear as schedule timers anymore1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/91Parse environment variables when getting config values2022-01-21T13:34:06+01:00David TrattnigParse environment variables when getting config valuesWhen configuration values are retrieved they should be check for the format `${ENV_VAR}`. In such case the actual value of the environment variable should be retrieved.When configuration values are retrieved they should be check for the format `${ENV_VAR}`. In such case the actual value of the environment variable should be retrieved.1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/3Playout & Fallback Logic2020-11-04T21:24:39+01:00David TrattnigPlayout & Fallback LogicIn case some schedule cannot be played for some reason, there are 3 types of fallback/emergency scenarios:
1. Schedule Fallback: Another programmed playlist for some empty timeslot is played (#44)
2. Show Fallback: Another programmed pl...In case some schedule cannot be played for some reason, there are 3 types of fallback/emergency scenarios:
1. Schedule Fallback: Another programmed playlist for some empty timeslot is played (#44)
2. Show Fallback: Another programmed playlist for this show is aired (#44)
3. Station Fallback: A playlist or folder with random music for this show is aired (#43)
Each playlist can consist of audio file entry. They can be played in linear order or randomly (compare Random Music feature). ~~In case of a playlist consisting of live or stream contents, it is expected that there is a recording of such show available. In such scenario the recorded version is played back only.~~ (Update: It turned out, that playlists can always change there contents by design, see comment https://gitlab.servus.at/aura/engine/-/issues/3#note_1637)
In case a fallback is triggered, following should happen:
1. Notify PM/PK about the incident via email (#38)
2. Include info on the fallback type and if the timeslot was empty (no schedule programmed) (#38)
3. (Optionally) Notify even before the actual broadcast has happened (this is scheduled for a later AURA release as it's optional)1.0-alpha2 โ โ๏ธ๐ฆ Precise Pheasanthttps://gitlab.servus.at/aura/engine/-/issues/78Preloading is not happening early enough2021-07-13T16:49:06+02:00David TrattnigPreloading is not happening early enoughWhen scheduling streams or files the preloading functionality is happening too late i.e. when the actually playout should be happening:
```
2021-07-05 12:24:16,731:AuraEngine:INFO - Finished fetching current programme from API (3 timesl...When scheduling streams or files the preloading functionality is happening too late i.e. when the actually playout should be happening:
```
2021-07-05 12:24:16,731:AuraEngine:INFO - Finished fetching current programme from API (3 timeslots) - [programme.py:80-refresh()]
2021-07-05 12:24:16,735:AuraEngine:INFO - For now, skipped 2 future timeslot(s) which are out of the scheduling window (Tยน-60s to Tยฒ-60s) - [scheduler.py:383-filter_scheduling_window()]
2021-07-05 12:24:16,736:AuraEngine:INFO - Fading out timeslot in 1625480998.5 seconds at 2021-07-05 12:30:00 | Timeslot: ID#406 [Show: Musikprogramm, ShowID: 1 | 12:25:00 - 12:30:00 ] - [scheduler.py:426-__init__()]
2021-07-05 12:25:00,237:AuraEngine:INFO - === on_timeslot_start('ID#406 [Show: Musikprogramm, ShowID: 1 | 12:25:00 - 12:30:00 ]') === - [scheduler.py:436-do_start_timeslot()]
2021-07-05 12:25:00,237:AuraEngine:INFO - Active timeslot used for trackservice 'ID#406 [Show: Musikprogramm, ShowID: 1 | 12:25:00 - 12:30:00 ]' - [trackservice.py:61-on_timeslot_start()]
2021-07-05 12:25:00,239:AuraEngine:INFO - There is no timeslot- or show-fallback defined for timeslot#406. The station fallback will be used automatically. - [fallback.py:192-queue_fallback_playlist()]
2021-07-05 12:25:00,239:AuraEngine:INFO - Built 1 entry group(s) - [scheduler.py:343-queue_playlist_entries()]
2021-07-05 12:25:00,240:AuraEngine:ERROR - Timer 'PRELOAD:do_preload:1625480685.0' is due in the past. Executing immediately ... - [control.py:243-__init__()]
2021-07-05 12:25:00,240:AuraEngine:INFO - === preload_group('PlaylistEntry #28 [12:25:00 - 12:43:53 | 1133sec | Source: ...file://musikprogramm/7], PlaylistEntry #29 [12:43:53 - 12:58:18 | 865sec | Source: ...file://musikprogramm/8]') === - [scheduler.py:488-do_preload()]
2021-07-05 12:25:00,240:AuraEngine:INFO - Swapped queue channel from A > B - [channels.py:261-channel_swap()]
2021-07-05 12:25:00,241:AuraEngine:INFO - Loading entry 'PlaylistEntry #28 [12:25:00 - 12:43:53 | 1133sec | Source: ...file://musikprogramm/7]' - [engine.py:281-preload_group()]
2021-07-05 12:25:00,241:AuraEngine:ERROR - Timer 'PLAY:do_play:1625480700.0' is due in the past. Executing immediately ... - [control.py:243-__init__()]
2021-07-05 12:25:00,241:AuraEngine:INFO - === play('PlaylistEntry #28 [12:25:00 - 12:43:53 | 1133sec | Source: ...file://musikprogramm/7], PlaylistEntry #29 [12:43:53 - 12:58:18 | 865sec | Source: ...file://musikprogramm/8]') === - [scheduler.py:504-do_play()]
2021-07-05 12:25:00,241:AuraEngine:INFO - Finished queuing programme. - [scheduler.py:269-queue_programme()]
2021-07-05 12:25:00,241:AuraEngine:CRITICAL - PLAY: The entry/entries are not yet ready to be played (Entries: PlaylistEntry #28 [12:25:00 - 12:43:53 | 1133sec | Source: ...file://musikprogramm/7], PlaylistEntry #29 [12:43:53 - 12:58:18 | 865sec | Source: ...file://musikprogramm/8]) - [scheduler.py:507-do_play()]
2021-07-05 12:25:00,241:AuraEngine:INFO - in_filesystem_1.queue_push('/home/david/Code/aura/engine/audio/source/musikprogramm/7.flac') - [engine.py:543-queue_push()]
2021-07-05 12:25:00,241:AuraEngine:INFO -
[ ENGINE COMMAND QUEUE ]
=> [TIMESLOT:do_start_timeslot:1625480700.0] exec at 2021-07-05 12:25:00.236984 (alive: False)
=> [TIMESLOT:do_end_timeslot:1625480998.5] exec at 2021-07-05 12:29:58.237792 (alive: True)
=> [PRELOAD:do_preload:1625480685.0] exec at 2021-07-05 12:24:44.740595 (alive: False)
=> [PLAY:do_play:1625480700.0] exec at 2021-07-05 12:24:59.741067 (alive: False)
- [control.py:396-log_commands()]
2021-07-05 12:25:00,241:AuraEngine:INFO - PLAY: Wait a little until preloading is done ... - [scheduler.py:509-do_play()]
2021-07-05 12:25:00,246:AuraEngine:INFO - in_filesystem_1.queue_push result: 6 - [engine.py:545-queue_push()]
2021-07-05 12:25:00,247:AuraEngine:INFO - Loading entry 'PlaylistEntry #29 [12:43:53 - 12:58:18 | 865sec | Source: ...file://musikprogramm/8]' - [engine.py:281-preload_group()]
2021-07-05 12:25:00,247:AuraEngine:INFO - in_filesystem_1.queue_push('/home/david/Code/aura/engine/audio/source/musikprogramm/8.flac') - [engine.py:543-queue_push()]
2021-07-05 12:25:00,256:AuraEngine:INFO - in_filesystem_1.queue_push result: 7 - [engine.py:545-queue_push()]
2021-07-05 12:25:02,245:AuraEngine:INFO - Starting to fading-in 'in_filesystem_1'. Step is 0.015s and target volume is 100. - [mixer.py:358-fade_in()]
2021-07-05 12:25:02,336:AuraEngine:INFO - Resolved 'ResourceType.FILE' entry 'PlaylistEntry #28 [12:25:00 - 12:43:53 | 1133sec | Source: ...file://musikprogramm/7]' for URI '/home/david/Code/aura/engine/audio/source/musikprogramm/7.flac' - [trackservice.py:414-resolve_entry()]
2021-07-05 12:25:02,336:AuraEngine:INFO - [ECI] Event 'on_metadata' issued successfully - [control.py:164-process()]
2021-07-05 12:25:02,338:AuraEngine:INFO - Posting playlog to Engine API... - [trackservice.py:167-store_trackservice()]
2021-07-05 12:25:02,348:AuraEngine:INFO - Posting clock info update to Engine API... - [trackservice.py:217-store_clock_info()]
2021-07-05 12:25:03,808:AuraEngine:INFO - Finished with fading-in 'in_filesystem_1'. - [mixer.py:369-fade_in()]
```Aura 0.9David TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/30Process dispatched events in threads2020-09-09T12:32:31+02:00David TrattnigProcess dispatched events in threads1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/53Process M3U playlists provided by Tank's playlist property "Stream"2020-12-08T19:32:04+01:00David TrattnigProcess M3U playlists provided by Tank's playlist property "Stream"This is a solution for 1.0 to allow integration of O94's "Random Music" Playlists. In a later AURA Version this will be replaced by a proper music pool solution.This is a solution for 1.0 to allow integration of O94's "Random Music" Playlists. In a later AURA Version this will be replaced by a proper music pool solution.1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/9Provide Reporting Data via API2020-03-09T09:11:13+01:00David TrattnigProvide Reporting Data via APIExport categorized data base on tags such as:
* Personal production or by 3rd parties (e.g. Broadcasts from Audio-In Studio might be labelled as an owned production automatically)
* Mark fallback broadcasts
* Marks repeating broadcasts
...Export categorized data base on tags such as:
* Personal production or by 3rd parties (e.g. Broadcasts from Audio-In Studio might be labelled as an owned production automatically)
* Mark fallback broadcasts
* Marks repeating broadcasts
Provide this data via JSON API Endpoints.1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/61Python 3.8 as minimum requirement2020-12-08T20:59:13+01:00David TrattnigPython 3.8 as minimum requirement1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/41Refactor scheduler and engine control threads for ease of use2020-11-20T19:28:48+01:00David TrattnigRefactor scheduler and engine control threads for ease of use1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/39Refactor to avoid use of Redis2020-10-30T14:42:59+01:00David TrattnigRefactor to avoid use of Redis- [x] Implement alternative communication to Redis
- [x] Remove Redis
- [x] Simplify boot phase- [x] Implement alternative communication to Redis
- [x] Remove Redis
- [x] Simplify boot phase1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/57Remove any "test data" references2020-11-27T17:24:08+01:00David TrattnigRemove any "test data" references1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnighttps://gitlab.servus.at/aura/engine/-/issues/59Remove any Comba Recorder leftovers2020-12-08T19:32:04+01:00David TrattnigRemove any Comba Recorder leftovers1.0-alpha2 โ โ๏ธ๐ฆ Precise PheasantDavid TrattnigDavid Trattnig