Commit Graph

4279 Commits

Author SHA1 Message Date
JustArchi
ec4439afb4 Make DismissInventoryNotifications false by default
The amount of people that have no clue what is happening is too damn high.
2017-02-09 13:16:30 +01:00
Łukasz Domeradzki
9b2a86d891 Translated 2017-02-09 11:42:42 +01:00
Łukasz Domeradzki
d2c2e30d47 New translations 2017-02-08 17:23:23 +01:00
JustArchi
d7f2610313 Bump MinHeartBeatTTL from 5 to 10 2017-02-08 14:55:40 +01:00
JustArchi
1363b23008 Handle temporary fetching failures appropriately 2017-02-08 14:41:28 +01:00
JustArchi
c1a1cf15b0 Misc 2017-02-08 14:36:10 +01:00
JustArchi
89a36beeae Improve statistics reporting
Skip reporting when user has private or empty inventory
2017-02-08 14:35:01 +01:00
JustArchi
92b9aeae31 Fix Mono compilation 2017-02-07 21:09:08 +01:00
Łukasz Domeradzki
ef01b304bb Translated 2017-02-07 20:22:25 +01:00
JustArchi
a8045ac50b Fix async/await with ConcurrentHashSet
Now this is a nice bug that was found accidentally by ArchiBoT...
ReaderWriterLockSlim() is very decent solution, but it's thread-based, and we're using our ConcurrentHashSet in mixed async/sync context. This means that if we use something like:
foreach (var item in concHashSet) {
    await AnythingAsync().ConfigureAwait(false);
}
It's totally possible that we'll request read lock as thread 1, and release the read lock as thread 2, which will lead to RWLock exception => System.Threading.SynchronizationLockException: The read lock is being released without being held.
Fortunately it looks like we didn't have any scenario like this in ASF, as this was possible only when we async/await while enumerating over ConcurrentHashSet, so that specific bug didn't affect ASF codebase (yet). Still, I must fix this as current implementation is not thread-safe, so our HashSet is in fact not concurrent in the first place.
I analyzed possible solutions and there are basically 3: either using ConcurrentDictionary and wrapping around it, replacing lock with SemaphoreSlim, or using third-party AsyncReaderWriterLock from StephenCleary. SemaphoreSlim entirely kills the concept of multiple readers one writer, and could affect performance negatively, moreover - it doesn't support upgreadable lock scenario we have with ReplaceIfNeededWith(). Concurrent dictionary would be nice if I didn't have that awful memory hit from storing mandatory pointless value, plus I don't really like concept of wrapping around conc dictionary if I can simply use it right away and drop my conc hashset entirely. AsyncReaderWriterLock seem to be really well written, and works on Mono + should be compatible with .NET core in the future, so we should go for it as it's the best bet both performance-wise and memory-wise.
This brings another package dependency and changes a bit backend of ConcurrentHashSet
2017-02-07 20:14:51 +01:00
JustArchi
f97379bf60 Misc 2017-02-07 17:35:52 +01:00
JustArchi
5197fffa3b Misc 2017-02-07 17:25:32 +01:00
Łukasz Domeradzki
dc74114f4c New translations 2017-02-07 14:23:13 +01:00
JustArchi
872151d2f7 Misc 2017-02-07 13:09:41 +01:00
JustArchi
d495d649ba Make WCF accept commands starting with '!' as well 2017-02-07 10:49:58 +01:00
Łukasz Domeradzki
dbd9389d6c Translated 2017-02-07 08:20:57 +01:00
Łukasz Domeradzki
965432d346 New translations 2017-02-07 02:40:49 +01:00
Łukasz Domeradzki
c4e1fe2bcf New translations 2017-02-06 22:51:51 +01:00
Łukasz Domeradzki
b0fc06f3d2 New translations 2017-02-06 22:51:48 +01:00
Łukasz Domeradzki
4845b21642 New translations 2017-02-06 22:40:49 +01:00
Łukasz Domeradzki
b7f3ce4036 New translations 2017-02-06 22:22:22 +01:00
Łukasz Domeradzki
6217552f23 New translations 2017-02-06 22:22:19 +01:00
Łukasz Domeradzki
a21689c76f New translations 2017-02-06 22:10:52 +01:00
Łukasz Domeradzki
a461b2da64 New translations 2017-02-06 22:01:52 +01:00
Łukasz Domeradzki
c653edfca8 New translations 2017-02-06 21:50:50 +01:00
Łukasz Domeradzki
53b38f5d55 New translations 2017-02-06 21:40:49 +01:00
Łukasz Domeradzki
9896758c3b New translations 2017-02-06 21:30:52 +01:00
Łukasz Domeradzki
855a09d4ea New translations 2017-02-06 21:21:27 +01:00
Łukasz Domeradzki
bfbcf59770 Translated 2017-02-06 21:10:59 +01:00
Łukasz Domeradzki
29924ad379 New translations 2017-02-06 21:10:55 +01:00
Łukasz Domeradzki
fd70edc5dd New translations 2017-02-06 21:02:33 +01:00
Łukasz Domeradzki
0431592be8 New translations 2017-02-06 20:52:44 +01:00
Łukasz Domeradzki
78405e9ccf New translations 2017-02-06 20:40:52 +01:00
Łukasz Domeradzki
a6f0c8f7c1 New translations 2017-02-06 20:30:51 +01:00
Łukasz Domeradzki
057a291f35 New translations 2017-02-06 20:21:17 +01:00
Łukasz Domeradzki
e0edfebe31 New translations 2017-02-06 20:00:18 +01:00
Łukasz Domeradzki
b210c24c9c New translations 2017-02-06 19:51:44 +01:00
Łukasz Domeradzki
f276762025 New translations 2017-02-06 19:31:44 +01:00
Łukasz Domeradzki
cdd9343903 New translations 2017-02-06 19:21:02 +01:00
Łukasz Domeradzki
33fc121e67 New translations 2017-02-06 19:20:57 +01:00
Łukasz Domeradzki
61bd191c15 Translated 2017-02-06 19:20:55 +01:00
Łukasz Domeradzki
05a7a40332 New translations 2017-02-06 19:00:57 +01:00
Łukasz Domeradzki
1535ec1c0c New translations 2017-02-06 18:44:40 +01:00
Łukasz Domeradzki
a7e2e8db73 New translations 2017-02-06 18:44:38 +01:00
Łukasz Domeradzki
1a91703157 New translations 2017-02-06 18:30:54 +01:00
Łukasz Domeradzki
7d0ff9f267 New translations 2017-02-06 18:30:51 +01:00
Łukasz Domeradzki
0753373ba9 New translations 2017-02-06 18:23:15 +01:00
Łukasz Domeradzki
96ee9692c0 New translations 2017-02-06 18:23:13 +01:00
Łukasz Domeradzki
4e6afe516a New translations 2017-02-06 16:21:08 +01:00
Łukasz Domeradzki
1f82a61346 New translations 2017-02-06 16:10:30 +01:00