Commit 1969d38e authored by Benjamin Elsdon's avatar Benjamin Elsdon
Browse files

DatabaseManager clean up

parent 77fcce65
...@@ -38,7 +38,8 @@ public final class DatabaseManager { ...@@ -38,7 +38,8 @@ public final class DatabaseManager {
return getDatastore().getDatabase(); return getDatastore().getDatabase();
} }
// Yes. I very dislike this method also but I'm lazy. Probably replace it by making the game server connect to the dispatch server instead. // Yes. I very dislike this method. However, this will be good for now.
// TODO: Add dispatch routes for player account management
public static Datastore getAccountDatastore() { public static Datastore getAccountDatastore() {
if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) { if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) {
return dispatchDatastore; return dispatchDatastore;
...@@ -50,7 +51,6 @@ public final class DatabaseManager { ...@@ -50,7 +51,6 @@ public final class DatabaseManager {
public static void initialize() { public static void initialize() {
// Initialize // Initialize
mongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().DatabaseUrl)); mongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().DatabaseUrl));
dispatchMongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseUrl));
Morphia morphia = new Morphia(); Morphia morphia = new Morphia();
// TODO Update when migrating to Morphia 2.0 // TODO Update when migrating to Morphia 2.0
...@@ -63,7 +63,6 @@ public final class DatabaseManager { ...@@ -63,7 +63,6 @@ public final class DatabaseManager {
// Build datastore // Build datastore
datastore = morphia.createDatastore(mongoClient, Grasscutter.getConfig().DatabaseCollection); datastore = morphia.createDatastore(mongoClient, Grasscutter.getConfig().DatabaseCollection);
dispatchDatastore = morphia.createDatastore(dispatchMongoClient, Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseCollection);
// Ensure indexes // Ensure indexes
try { try {
...@@ -82,20 +81,25 @@ public final class DatabaseManager { ...@@ -82,20 +81,25 @@ public final class DatabaseManager {
} }
} }
// Ensure indexes for dispatch server if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) {
try { dispatchMongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseUrl));
dispatchDatastore.ensureIndexes(); dispatchDatastore = morphia.createDatastore(dispatchMongoClient, Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseCollection);
} catch (MongoCommandException e) {
Grasscutter.getLogger().info("Mongo index error: ", e); // Ensure indexes for dispatch server
// Duplicate index error try {
if (e.getCode() == 85) {
// Drop all indexes and re add them
MongoIterable<String> collections = dispatchDatastore.getDatabase().listCollectionNames();
for (String name : collections) {
dispatchDatastore.getDatabase().getCollection(name).dropIndexes();
}
// Add back indexes
dispatchDatastore.ensureIndexes(); dispatchDatastore.ensureIndexes();
} catch (MongoCommandException e) {
Grasscutter.getLogger().info("Mongo index error: ", e);
// Duplicate index error
if (e.getCode() == 85) {
// Drop all indexes and re add them
MongoIterable<String> collections = dispatchDatastore.getDatabase().listCollectionNames();
for (String name : collections) {
dispatchDatastore.getDatabase().getCollection(name).dropIndexes();
}
// Add back indexes
dispatchDatastore.ensureIndexes();
}
} }
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment