una-xiv / umbra

Umbra XIV - Adds quality of life improvements to the game and consolidates common UI elements and actions into a single uniform interface.
GNU Affero General Public License v3.0
51 stars 18 forks source link

Lack of gearsets cause dalamud.log spam #60

Closed jordguitar closed 2 months ago

jordguitar commented 2 months ago

If you were to create a new character (or just login with a character with no gearsets) with the plugin enabled, the following will get spammed to dalamud.log:

2024-05-02 09:24:49.586 -05:00 [INF] LASTEXCEPTION:eyJXaGVuIjoiMjAyNC0wNS0wMlQwOToyNDo0OS41ODYwNjk5LTA1OjAwIiwiSW5mbyI6IlN5c3RlbS5BZ2dyZWdhdGVFeGNlcHRpb246IEEgVGFzaydzIGV4Y2VwdGlvbihzKSB3ZXJlIG5vdCBvYnNlcnZlZCBlaXRoZXIgYnkgV2FpdGluZyBvbiB0aGUgVGFzayBvciBhY2Nlc3NpbmcgaXRzIEV4Y2VwdGlvbiBwcm9wZXJ0eS4gQXMgYSByZXN1bHQsIHRoZSB1bm9ic2VydmVkIGV4Y2VwdGlvbiB3YXMgcmV0aHJvd24gYnkgdGhlIGZpbmFsaXplciB0aHJlYWQuIChFeGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGJ5IHRoZSB0YXJnZXQgb2YgYW4gaW52b2NhdGlvbi4pXHJcbiAtLS0+IFN5c3RlbS5SZWZsZWN0aW9uLlRhcmdldEludm9jYXRpb25FeGNlcHRpb246IEV4Y2VwdGlvbiBoYXMgYmVlbiB0aHJvd24gYnkgdGhlIHRhcmdldCBvZiBhbiBpbnZvY2F0aW9uLlxyXG4gLS0tPiBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlOb3RGb3VuZEV4Y2VwdGlvbjogVGhlIGdpdmVuIGtleSAnMjU1JyB3YXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnkuXHJcbiAgIGF0IFVtYnJhLkdhbWUuR2VhcnNldFJlcG9zaXRvcnkuT25UaWNrKCkgaW4gL3dvcmsvcmVwby9VbWJyYS5HYW1lL3NyYy9QbGF5ZXIvR2VhcnNldC9HZWFyc2V0UmVwb3NpdG9yeS5jczpsaW5lIDE4N1xyXG4gICBhdCBJbnZva2VTdHViX0dlYXJzZXRSZXBvc2l0b3J5Lk9uVGljayhPYmplY3QsIE9iamVjdCwgSW50UHRyKilcclxuICAgYXQgU3lzdGVtLlJlZmxlY3Rpb24uTWV0aG9kQmFzZUludm9rZXIuSW52b2tlV2l0aE5vQXJncyhPYmplY3Qgb2JqLCBCaW5kaW5nRmxhZ3MgaW52b2tlQXR0cilcclxuICAgLS0tIEVuZCBvZiBpbm5lciBleGNlcHRpb24gc3RhY2sgdHJhY2UgLS0tXHJcbiAgIGF0IFN5c3RlbS5SZWZsZWN0aW9uLk1ldGhvZEJhc2VJbnZva2VyLkludm9rZVdpdGhOb0FyZ3MoT2JqZWN0IG9iaiwgQmluZGluZ0ZsYWdzIGludm9rZUF0dHIpXHJcbiAgIGF0IFVtYnJhLkNvbW1vbi5TY2hlZHVsZXIuVGlja0hhbmRsZXIuSW52b2tlKERvdWJsZSBkZWx0YVRpbWUpIGluIC93b3JrL3JlcG8vVW1icmEuQ29tbW9uL3NyYy9TY2hlZHVsZXIvU2NoZWR1bGVyLmNzOmxpbmUgMTUxXHJcbiAgIGF0IFVtYnJhLkNvbW1vbi5TY2hlZHVsZXIuPD5jX19EaXNwbGF5Q2xhc3M3XzAuPE9uVW1icmFUaWNrPmJfXzAoKSBpbiAvd29yay9yZXBvL1VtYnJhLkNvbW1vbi9zcmMvU2NoZWR1bGVyL1NjaGVkdWxlci5jczpsaW5lIDc0XHJcbiAgIGF0IERhbGFtdWQuR2FtZS5GcmFtZXdvcmsuUnVuT25GcmFtZXdvcmtUaHJlYWQoQWN0aW9uIGFjdGlvbikgaW4gQzpcXGdvYXRzb2Z0XFxjb21wYW55c2VjcmV0c1xcZGFsYW11ZFxcR2FtZVxcRnJhbWV3b3JrLmNzOmxpbmUgMTkxXHJcbiAgIC0tLSBFbmQgb2YgaW5uZXIgZXhjZXB0aW9uIHN0YWNrIHRyYWNlIC0tLSIsIkNvbnRleHQiOiJVbm9ic2VydmVkIGV4Y2VwdGlvbiBpbiBUYXNrLiJ9
2024-05-02 09:24:49.586 -05:00 [ERR] Unobserved exception in Task.
System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. (Exception has been thrown by the target of an invocation.)
 ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.Collections.Generic.KeyNotFoundException: The given key '255' was not present in the dictionary.
   at Umbra.Game.GearsetRepository.OnTick() in /work/repo/Umbra.Game/src/Player/Gearset/GearsetRepository.cs:line 187
   at InvokeStub_GearsetRepository.OnTick(Object, Object, IntPtr*)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
   --- End of inner exception stack trace ---
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
   at Umbra.Common.Scheduler.TickHandler.Invoke(Double deltaTime) in /work/repo/Umbra.Common/src/Scheduler/Scheduler.cs:line 151
   at Umbra.Common.Scheduler.<>c__DisplayClass7_0.<OnUmbraTick>b__0() in /work/repo/Umbra.Common/src/Scheduler/Scheduler.cs:line 74
   at Dalamud.Game.Framework.RunOnFrameworkThread(Action action) in C:\goatsoft\companysecrets\dalamud\Game\Framework.cs:line 191
   --- End of inner exception stack trace ---

This spam continues until a gearset is created on the active character.

You can easily reproduce this by making a new character.

If no gearsets are detected, it should probably instead detect the current class and load information that way instead of waiting for a gearset to be made.