Skip to content

Commit

Permalink
other: fixed rare errors on images download opening, fixed wrong code…
Browse files Browse the repository at this point in the history
… in chats and preferences store;
  • Loading branch information
JayDi85 committed Aug 16, 2024
1 parent 3d6a281 commit e386210
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
import java.io.File;
import java.util.List;
import java.util.*;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -327,6 +330,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
// auto-update settings on first run
public static final String KEY_SETTINGS_VERSION = "settingsVersion";

private static final ReadWriteLock cacheLock = new ReentrantReadWriteLock();
private static final Map<String, String> CACHE = new HashMap<>();

public static final String OPEN_CONNECTION_TAB = "Open-Connection-Tab";
Expand Down Expand Up @@ -3804,15 +3808,27 @@ public static int getCachedValue(String key, int def) {
}

public static String getCachedValue(String key, String def) {
if (CACHE.containsKey(key)) {
return CACHE.get(key);
} else {
final Lock r = cacheLock.readLock();
r.lock();
try {
if (CACHE.containsKey(key)) {
return CACHE.get(key);
}
} finally {
r.unlock();
}

final Lock w = cacheLock.writeLock();
w.lock();
try {
String value = MageFrame.getPreferences().get(key, def);
if (value == null) {
return def;
value = def;
}
CACHE.put(key, value);
return value;
} finally {
w.unlock();
}
}

Expand Down
2 changes: 1 addition & 1 deletion Mage.Server/src/main/java/mage/server/ChatSession.java
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ public void broadcast(String userName, String message, MessageColor color, boole
}
}
if (!clientsToRemove.isEmpty()) {
final Lock w = lock.readLock();
final Lock w = lock.writeLock();
w.lock();
try {
users.keySet().removeAll(clientsToRemove);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

Expand Down Expand Up @@ -53,13 +54,14 @@ public enum ServerMessagesUtil {
}

public List<String> getMessages() {
lock.readLock().lock();
final Lock r = lock.readLock();
r.lock();
try {
List<String> res = new ArrayList<>(this.newsMessages);
res.add(this.statsMessage);
return res;
} finally {
lock.readLock().unlock();
r.unlock();
}
}

Expand All @@ -68,13 +70,14 @@ private void reloadMessages() {
List<String> updatedMessages = new ArrayList<>(readFromFile());
String updatedStats = getServerStatsMessage();

lock.writeLock().lock();
final Lock w = lock.writeLock();
w.lock();
try {
this.newsMessages.clear();
this.newsMessages.addAll(updatedMessages);
this.statsMessage = updatedStats;
} finally {
lock.writeLock().unlock();
w.unlock();
}
}

Expand Down
3 changes: 3 additions & 0 deletions Utils/find_new_cards.pl
Original file line number Diff line number Diff line change
Expand Up @@ -185,13 +185,16 @@ sub get_name_of_card_from_class
print ("\n\n\n");
my $set;
#print Dumper(\%cards_by_sets);
my $total = 0;
foreach $set (sort keys (%cards_by_sets))
{
my $cards = $cards_by_sets{$set};
print ("* ", $set, " - added ", scalar @{$cards}, " new cards;", "\n");
foreach my $card (@{$cards})
{
$total++;
print (" * ", $card, "\n");
}
}
print ("* Total cards: ", $total);
}

0 comments on commit e386210

Please sign in to comment.