Explorar o código

修复无法序列化Blob日志

AE86 %!s(int64=4) %!d(string=hai) anos
pai
achega
e15d8f57a1

+ 7 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/flush/FlushServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dbsyncer.parser.flush;
 
+import com.alibaba.fastjson.JSONException;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.storage.SnowflakeIdWorker;
 import org.dbsyncer.storage.StorageService;
@@ -56,7 +57,12 @@ public class FlushServiceImpl implements FlushService {
             params.put(ConfigConstant.DATA_SUCCESS, success ? StorageDataStatusEnum.SUCCESS.getValue() : StorageDataStatusEnum.FAIL.getValue());
             params.put(ConfigConstant.DATA_EVENT, event);
             params.put(ConfigConstant.DATA_ERROR, added.get() ? "" : error);
-            params.put(ConfigConstant.CONFIG_MODEL_JSON, JsonUtil.objToJson(r));
+            try {
+                params.put(ConfigConstant.CONFIG_MODEL_JSON, JsonUtil.objToJson(r));
+            } catch (JSONException e) {
+                logger.warn("可能存在Blob或inputStream大文件类型, 无法序列化:{}", r);
+                params.put(ConfigConstant.CONFIG_MODEL_JSON, r.toString());
+            }
             params.put(ConfigConstant.CONFIG_MODEL_CREATE_TIME, now);
             added.set(true);
             return params;

+ 1 - 1
dbsyncer-web/src/main/resources/public/monitor/monitor.html

@@ -54,7 +54,7 @@
                             </td>
                             <td th:text="${d?.error}" th:title="${d?.error}" style="max-width:100px;" class="dbsyncer_over_hidden"></td>
                             <td th:text="${#dates.format(d?.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
-                            <td><a th:json="${d?.json}" href="javascript:;" class="label label-info queryData">查看数据</a></td>
+                            <td><a th:json="${d?.json}" href="javascript:;" class="label label-info queryData">查看数据</a><div class="hidden" th:text="${d?.json}"></div></td>
                         </tr>
                     </tbody>
                 </table>

+ 2 - 2
dbsyncer-web/src/main/resources/static/js/monitor/index.js

@@ -15,7 +15,7 @@ function bindQueryDataDetailEvent() {
     var $queryData = $(".queryData");
     $queryData.unbind("click");
     $queryData.click(function () {
-        var json = $(this).attr("json");
+        var json = $(this).parent().find("div").text();
         var html = '<div class="row driver_break_word">' + json + '</div>';
         BootstrapDialog.show({
             title: "注意信息安全",
@@ -132,7 +132,7 @@ function showData($dataList, arr, append){
             html += '<td>' + (arr[i].success ? '<span class="label label-success">成功</span>' : '<span class="label label-warning">失败</span>') + '</td>';
             html += '<td title="' + arr[i].error + '" style="max-width:100px;" class="dbsyncer_over_hidden">' + arr[i].error + '</td>';
             html += '<td>' + formatDate(arr[i].createTime) + '</td>';
-            html += '<td><a json=' + arr[i].json + ' href="javascript:;" class="label label-info queryData">查看数据</a></td>';
+            html += '<td><a href="javascript:;" class="label label-info queryData">查看数据</a><div class="hidden">' + arr[i].json + '</div></td>';
             html += '</tr>';
         }
     }