Forráskód Böngészése

!182 merge
Merge pull request !182 from AE86/ae86_dev

AE86 1 éve
szülő
commit
ffff7560a1

+ 15 - 10
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/DataSyncServiceImpl.java

@@ -109,20 +109,25 @@ public class DataSyncServiceImpl implements DataSyncService {
         BinlogMap message = BinlogMap.parseFrom(bytes);
         message.getRowMap().forEach((k, v) -> {
             if (fieldMap.containsKey(k)) {
-                Object val = BinlogMessageUtil.deserializeValue(fieldMap.get(k).getType(), v);
-                // 处理二进制对象显示
-                if (prettyBytes) {
-                    if (null != val && val instanceof byte[]) {
-                        byte[] b = (byte[]) val;
-                        if (b.length > 128) {
-                            target.put(k, String.format("byte[%d]", b.length));
+                try {
+                    Object val = BinlogMessageUtil.deserializeValue(fieldMap.get(k).getType(), v);
+                    // 处理二进制对象显示
+                    if (prettyBytes) {
+                        if (null != val && val instanceof byte[]) {
+                            byte[] b = (byte[]) val;
+                            if (b.length > 128) {
+                                target.put(k, String.format("byte[%d]", b.length));
+                                return;
+                            }
+                            target.put(k, Arrays.toString(b));
                             return;
                         }
-                        target.put(k, Arrays.toString(b));
-                        return;
                     }
+                    target.put(k, val);
+                } catch (Exception e) {
+                    logger.warn("解析Binlog数据类型异常:type=[{}], valueType=[{}], value=[{}]", fieldMap.get(k).getType(),
+                            (v == null ? null : v.getClass().getName()), v);
                 }
-                target.put(k, val);
             }
         });
         return target;

+ 2 - 0
dbsyncer-storage/src/main/java/org/dbsyncer/storage/AbstractStorageService.java

@@ -68,6 +68,8 @@ public abstract class AbstractStorageService implements StorageService, Disposab
             }
         } catch (InterruptedException e) {
             logger.warn("tryLock error", e.getLocalizedMessage());
+        } catch (IllegalArgumentException e) {
+            logger.warn("查询数据异常,请重试");
         } finally {
             if (locked) {
                 lock.unlock();