Intended audience: end-users, developers
This document serves as a reference list of previous issues (which may be partially or fully solved) and existing shortcomings due to FlightGazer's architecture.
These used to be listed as part of the main readme file, but has been separated out into this document to declutter that readme.
- signed: WeegeeNumbuh1
- FlightGazer has a feature where it will write out stats before shutting down so that it can reload those stats upon restart (if it's the same day). The flyby count is simply a number and has no additional information such as the IDs of aircraft
- Upon reload, FlightGazer fills in dummy IDs equal to the value of the last written flyby count in its internal list of aircraft IDs it keeps track of for flybys
- The flyby count runs under the assumption that the flyby area itself is small, but since
No Filterremoves that restriction, it's a free-for-all - This is not usually a problem, as long as we don't restart often in the same day
- May not ever get fixed
- Flyby stats are not 100% accurate, but can reasonably treated as so as long as the aforementioned settings are reasonable for the local traffic
- Example where inaccuracy is possible: a helicopter hovering within the designated tracking area along with the shortest possible
FLYBY_STALENESSvalue. If the helicopter stays within the area for longer than theFLYBY_STALENESSvalue, it will raise the counter - When using
No Filtermode,FLYBY_STALENESSinfluences the amount of flights seen as it uses the same flyby tracking logic- Therefore, FlightGazer's metrics for counting "unique aircraft seen" (aka "flights") in this mode might vary significantly if compared to other tracking services
- Example where inaccuracy is possible: a helicopter hovering within the designated tracking area along with the shortest possible
FLYBY_STALENESSwas introduced in v.1.3.0 to solve the initial problem of how the internal flight counter worked at the time:- Earlier versions of FlightGazer used a
setas a naive way to count flybys - If the same aircraft appeared again later in the day, it wouldn't count as another flyby
- Earlier versions of FlightGazer used a
FLYBY_STALENESSwas tied to the API results cache in v.2.10.0 to minimize making new API calls, especially for cases of touch-and-go landings- Thus, the flyby count has a bias towards lower numbers
- The current algorithm in place was designed for the way FlightGazer does its polling, which is stateless
Processes that need to run in an elevated tmux instance will get killed if the FlightGazer service is stopped/restarted
- Because FlightGazer needs to run as root and inside
tmuxwhen it's running as a service, any other processes that need to both run elevated and withtmuxwill get attached to the existingtmuxserver. - When the service is restarted or stopped, systemd will kill the
tmuxserver, as expected. - The only workaround is to not use other processes that rely on this combinaton, or, simply running FlightGazer on its own dedicated system.
- On rare occasions are times when there will be two entries of the same aircraft
- This is a common case that's been noted since the v.0.x days, mainly due to a dual (ADS-B + UAT) receiver setup
- It was determined to occur with aircraft that uses a dual mode transponder or there is ADS-R contact of the same aircraft on UAT while it's present over ADS-B
- At the time, this surprisingly did not break functionality
- This was first mitigated in v.2.6.3 and fully rectified in v.5.0.0
- v.2.6.3 simply used a "first-come, first-served" approach, where the first instance of the same aircraft was used
- This did not necessarily represent the best information source for the aircraft as at times FlightGazer would latch onto ADS-R data, which led to instances of using stale data (e.g. the aircraft has long left the tracking area but the last data packet with location was inside the tracking area)
- The introduction of
LOCATION_TIMEOUTin v.2.3.0 was actually created to handle this case at the time
- The introduction of
- This did not necessarily represent the best information source for the aircraft as at times FlightGazer would latch onto ADS-R data, which led to instances of using stale data (e.g. the aircraft has long left the tracking area but the last data packet with location was inside the tracking area)
- v.5.0.0 introduced a priority-based deduplication algorithm which almost solves this issue
- This algorithm is not infallable as it relies on more modern dump1090 builds/readsb to embed the broadcast type in the data; in the absence of this, the algorithm becomes functionally equivalent to the method introduced in v.2.6.3
- v.2.6.3 simply used a "first-come, first-served" approach, where the first instance of the same aircraft was used
- With the way FlightGazer is run (inside
tmuxto ensure persistence), any unhandled error that leads to it crashing is not propagated - Versions v.9.1.0 and newer now write a file in
/run/FlightGazerif FlightGazer ends up in a degraded state or quits due to an uncorrectable error. - Versions v.11.0.0 and newer utilize a new systemd service type which fully fixes this issue
This issue is not fully fixed but has been mitigated somewhat, as long as the main python script is able to runSyntax errors tend to be the Achilles Heel in this case; the service will start successfully, but becausetmuxexits once there is nothing running, it will return an exit code of0.