makerplane / pyEfis

Electronic Flight Information System in Python
GNU General Public License v2.0
58 stars 31 forks source link

Race when loading causes exception #139

Closed e100 closed 5 months ago

e100 commented 6 months ago

Sometimes when pyefis starts it will throw an exception because it has not yet loaded a particular fixid.

I can usually reproduce this by starting pyefis, and then starting fixgateway. Shortly after starting fixgateway pyefis it will throw an exception:

Traceback (most recent call last):
  File "/snap/pyefis/20/lib/python3.10/site-packages/pyefis/screens/screenbuilder.py", line 576, in resizeEvent
    self.init_screen()
  File "/snap/pyefis/20/lib/python3.10/site-packages/pyefis/screens/screenbuilder.py", line 251, in init_screen
    count = self.load_instrument(i,count)
  File "/snap/pyefis/20/lib/python3.10/site-packages/pyefis/screens/screenbuilder.py", line 199, in load_instrument
    self.setup_instruments(count,inst,replace=this_replacements)
  File "/snap/pyefis/20/lib/python3.10/site-packages/pyefis/screens/screenbuilder.py", line 337, in setup_instruments
    self.instruments[count] = VirtualVfr(self,font_percent=font_percent)
  File "/snap/pyefis/20/lib/python3.10/site-packages/pyefis/instruments/ai/VirtualVfr.py", line 58, in __init__
    super(VirtualVfr, self).__init__(parent, font_percent=font_percent)
  File "/snap/pyefis/20/lib/python3.10/site-packages/pyefis/instruments/ai/__init__.py", line 82, in __init__
    pitch = fix.db.get_item("PITCH")
  File "/snap/pyefis/20/lib/python3.10/site-packages/pyavtools/fix/__init__.py", line 340, in get_item
    return self.__items[key]
KeyError: 'PITCH'