Jelajahi Sumber

避免分片增量恢复与命令同时执行

wukai 1 tahun lalu
induk
melakukan
b4793e7532

+ 12 - 8
sync-in/src/main/java/com/jjt/in/service/impl/InMongoServiceImpl.java

@@ -63,6 +63,7 @@ public class InMongoServiceImpl extends InBaseService implements IInMongoService
             if ("1".equals(sharding)) {
                 //判断是否分片集群
                 sharding(host, port, filaName);
+                return;
             }
         }
         try {
@@ -94,12 +95,12 @@ public class InMongoServiceImpl extends InBaseService implements IInMongoService
     private void sharding(String host, String port, String filename) {
         File file = new File(filename);
         BSONDecoder decoder = new BasicBSONDecoder();
-        MongoClient mongoClient = new MongoClient("192.168.188.62", 27017);
-        List<String> dbs = new ArrayList<>();
-        for (String db : mongoClient.listDatabaseNames()) {
-            dbs.add(db);
-        }
-        try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
+
+        try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file)); MongoClient mongoClient = new MongoClient(host, Integer.parseInt(port));) {
+            List<String> dbs = new ArrayList<>();
+            for (String db : mongoClient.listDatabaseNames()) {
+                dbs.add(db);
+            }
             while (inputStream.available() > 0) {
 
                 BSONObject obj = decoder.readObject(inputStream);
@@ -113,8 +114,11 @@ public class InMongoServiceImpl extends InBaseService implements IInMongoService
                 }
                 String[] nss = ns.split("\\.");
                 if (!dbs.contains(nss[0])) {
-                    MongoDatabase mdb = mongoClient.getDatabase("admin");
-                    mdb.runCommand(new Document("enablesharding", nss[0]));
+                    try {
+                        MongoDatabase mdb = mongoClient.getDatabase("admin");
+                        mdb.runCommand(new Document("enablesharding", nss[0]));
+                    } catch (Exception e) {
+                    }
                 }
                 MongoDatabase database = mongoClient.getDatabase(nss[0]);
                 MongoCollection<BasicBSONObject> collection = database.getCollection(nss[1], BasicBSONObject.class);