[mythtv-users] Starting mythfrontend with systemd?

Alec Leamas leamas.alec at gmail.com
Thu Oct 5 04:44:55 UTC 2017



On 05/10/17 04:44, Bill Meek wrote:
> On 10/04/2017 08:08 PM, Hika van den Hoven wrote:
>> Hoi Ian,
>>
>> Wednesday, October 4, 2017, 11:53:06 PM, you wrote:
>>
>>> Sorry for all the recent posts, but after running MythTV since
>>> 2011, the upgrade to 29/16.04 has tossed a few curveballs at me.
>>> Most things have been smooth but there's a few small issues, perhaps
>>> due to the fact that the previous Mythbuntu ISO install handled so 
>>> many tasks for you.
>>
>>> In order to start the mythfrontend on my combined FE/BE at boot I
>>> added the mythfrontend command to Sessions and Starup. But it's hit
>>> and miss as to whether it starts up before the backend/mysql are
>>> fully up. If it starts before then, even the subsequent retries seem
>>> to be failing the dbawake test, even though mythbackend is running 
>>> and connected to mysql.
>>
>>> Looking at
>>> https://www.mythtv.org/wiki/Configuring_Frontend#Starting_the_Frontend,
>>> I don't see any mention of scripting the startup.
>>
>>> Should the Frontend be started with systemd instead and if so is
>>> there a recommended service file that waits for the backend and
>>> mysql to be fully functioning before starting mythfrontend?
>>
>>> Thanks.
>>
>> If you want to be sure the backend is up add a sleep command to your
>> frontend startup script. Like sleep 5 to wait 5 seconds, which should
>> be more then enough.
> 
> To be sure the backend is up and running (not still starting up)
> consider the following, probably without the echos:
> 
> ATTEMPTS=20
> BACKEND='yourBackendHostNameOrIP'
> 
> for TRIES in $(seq $ATTEMPTS); do
[cut]

Given the state of mythtv this might be worth a try; I did something 
similar myself and it worked.

However, in general there are two cases: a combined FE/BE and separate 
ones. In the case of separate BE:s, the current code should handle 
startup just fine.

On a combined FE/BE systemd aggressively parallelizes the startup. My 
gut feeling is that this what's happening for you. Basically such a case 
is non-reproducible. Although a a script like above might work as a 
patch, the proper solution might be to add systemd socket startup 
support to the backend. This way, the socket the BE listens to will be 
available before any FE (or BE) is started.

In the end, this is the systemd way to handle the boot race here. 
However, it includes some trivial source fixes to the BE and revised 
systemd support files including a new mythtv.socket one.

Just my 5 öre,

--alec


More information about the mythtv-users mailing list