Closed Taomyn closed 6 years ago
When EDDI first starts, if you have enabled the connection to EDSM, it syncs flight logs with EDSM. If it has been some time since the last sync, this process may take some time to complete.
I was playing E:D last night, I only noticed it today when I was starting everything up before running E:D - which I can't do now that my Oculus won't run :-(
I've left it running for 30min and it was still doing the same - even EDDiscovery doesn't take that long.
I'm guessing that EDDI was able to complete most (or all) of the sync through the VoiceAttack instance before you closed VoiceAttack and opened EDDI as a standalone application.
This process is necessary to sync your travel log, system comments, etc.
For over 30min without finishing (had to close VoiceAttack) and only when I run it through VoiceAttack?
I'll start VA and wait again, seeing as I can't play E:D anyway......
I've been waiting again and went to look at the log file, I think there's a problem as this is all it is logging now:
2018-03-07T18:57:19 VoiceAttackPlugin:setStatus [W] EDDI exception: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Aggregate[TSource](IEnumerable
1 source, Func3 func) at EddiSpeechService.Translations.ICAO(String callsign, Boolean passDash) at EddiVoiceAttackResponder.VoiceAttackPlugin.setShipValues(Ship ship, String prefix, Object& vaProxy) 2018-03-07T18:57:19 VoiceAttackPlugin:setStatus [W] EDDI exception: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Aggregate[TSource](IEnumerable
1 source, Func3 func) at EddiSpeechService.Translations.ICAO(String callsign, Boolean passDash) at EddiVoiceAttackResponder.VoiceAttackPlugin.setShipValues(Ship ship, String prefix, Object& vaProxy) 2018-03-07T18:57:19 VoiceAttackPlugin:setStatus [W] EDDI exception: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Aggregate[TSource](IEnumerable
1 source, Func3 func) at EddiSpeechService.Translations.ICAO(String callsign, Boolean passDash) at EddiVoiceAttackResponder.VoiceAttackPlugin.setShipValues(Ship ship, String prefix, Object& vaProxy) 2018-03-07T18:57:20 VoiceAttackPlugin:setStatus [W] EDDI exception: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Aggregate[TSource](IEnumerable
1 source, Func3 func) at EddiSpeechService.Translations.ICAO(String callsign, Boolean passDash) at EddiVoiceAttackResponder.VoiceAttackPlugin.setShipValues(Ship ship, String prefix, Object& vaProxy) 2018-03-07T18:57:20 VoiceAttackPlugin:setStatus [W] EDDI exception: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Aggregate[TSource](IEnumerable
1 source, Func3 func) at EddiSpeechService.Translations.ICAO(String callsign, Boolean passDash) at EddiVoiceAttackResponder.VoiceAttackPlugin.setShipValues(Ship ship, String prefix, Object& vaProxy) 2018-03-07T18:57:21 VoiceAttackPlugin:setStatus [W] EDDI exception: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Aggregate[TSource](IEnumerable
1 source, Func3 func) at EddiSpeechService.Translations.ICAO(String callsign, Boolean passDash) at EddiVoiceAttackResponder.VoiceAttackPlugin.setShipValues(Ship ship, String prefix, Object& vaProxy) 2018-03-07T18:57:21 VoiceAttackPlugin:setStatus [W] EDDI exception: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Aggregate[TSource](IEnumerable
1 source, Func3 func) at EddiSpeechService.Translations.ICAO(String callsign, Boolean passDash) at EddiVoiceAttackResponder.VoiceAttackPlugin.setShipValues(Ship ship, String prefix, Object& vaProxy)
I was finally able to review your log this evening. Neither component of EDDI that heavily relies on the sql database (EDSM and Galnet) is enabled on your configuration. It looks like you are not configured to use EDSM at all so the sync I mentioned wouldn't be applicable / performed on your PC. The only sql database entries occurred when EDDI needed to record systems that you actually visited. All in all, sql access should have been very light for you. I don't see anything in this log that would suggest a spike in cpu cycles due to sql access.
How were you observing the cpu spikes and linking them to EDDI.sqlite? I'm at a loss for how sqlite could be causing the spike you're reporting.
Version 3.0.0-b1 does implement a new Status monitor. We've identified some errors and have toned down the update frequency for that new monitor in the next update. Please try the next beta version when that becomes available and compare?
It's not CPU spikes, it's constant disk access. After VA starts and everything is loaded (empty profile to eliminate any thing a profile could be doing), I see the hard disk light flashing constantly. I then start the Windows resource monitor, look at the Disk tab and can see VoiceAttack.exe accessing EDDI.sqlite constantly at over 2million Bytes/sec both read and write. It's not 100%'ing the disk but even 35% constantly is not a good sign. The access seems to match the repeated logging of the exception messages I pasted above, which you haven't mentioned.
I can't attach a screen shot as I'm not at home but can do so later to show the information, and will try the next beta once released of course.
I haven't been able to replicate this exception yet. The exception does seem to mention the status monitor, which as I said we'll be significantly revising for the next beta.
I just remembered... SetStatus is a pre-existing function that existed before the status monitor. Can I suggest that your ship monitor config file may be corrupt?
Try navigating to %appdata%/EDDI and deleting shipmonitor.json while completely exited out of VoiceAttack and EDDI. Then relaunch EDDI and let EDDI regenerate the file. After doing this, does the issue recur?
Not sure how sqlite handles the journal but whenever this spike on load occurs the EDDI.sqlite-journal file is created and deleted multiple times (I assume due to DB transactions?) which adds to the spike.
I deleted the shipmonitor.json file, it was recreated but the issue persists. As @moreyummystuff states above the journal file is constantly recreated.
Do you have EDSM credentials recorded in EDDI?
Is the exception still appearing in the log? I think the exception you're seeing might have been a separate issue with your shipmonitor.json (and may have been fixed by deleting shipmonitor.json)?
I've revised the code so that we need to write much less to the database when EDDI loads, and to batch database writes to further reduce disk usage. I think you'll see a pretty dramatic difference in the next update. :-)
EDDI version in which issue found
[3.0.0-b1]
Steps to reproduce
Expected
[Normal disk access]
Observed
[35% constant disk access of VoiceAttack.exe to EDDI.sqlite]
Investigation
eddi_issue.zip