This is an automated email from the ASF dual-hosted git repository.

kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git


The following commit(s) were added to refs/heads/master by this push:
     new 402f483  * [Android] rm useless code `WXInstanceExceptionRecord` 
(#1898)
402f483 is described below

commit 402f4835a7a9f92bc461e3bf2a46369091b65a48
Author: chen <[email protected]>
AuthorDate: Wed Dec 12 15:53:02 2018 +0800

    * [Android] rm useless code `WXInstanceExceptionRecord` (#1898)
---
 .../main/java/com/taobao/weex/WXSDKInstance.java   |  12 --
 .../com/taobao/weex/bridge/WXBridgeManager.java    |   4 +-
 .../com/taobao/weex/performance/WXInstanceApm.java |   9 +-
 .../performance/WXInstanceExceptionRecord.java     | 206 ---------------------
 .../weex/ui/action/GraphicActionCreateBody.java    |   1 -
 .../java/com/taobao/weex/ui/component/WXEmbed.java |   4 -
 .../com/taobao/weex/ui/component/WXVContainer.java |   2 +-
 .../com/taobao/weex/utils/WXExceptionUtils.java    |  33 +++-
 8 files changed, 33 insertions(+), 238 deletions(-)

diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java 
b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index f51af1a..fd623fb 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -66,9 +66,7 @@ import com.taobao.weex.dom.WXEvent;
 import com.taobao.weex.http.WXHttpUtil;
 import com.taobao.weex.instance.InstanceOnFireEventInterceptor;
 import com.taobao.weex.layout.ContentBoxMeasurement;
-import com.taobao.weex.performance.WXAnalyzerDataTransfer;
 import com.taobao.weex.performance.WXInstanceApm;
-import com.taobao.weex.performance.WXInstanceExceptionRecord;
 import com.taobao.weex.tracing.WXTracing;
 import com.taobao.weex.ui.action.GraphicActionAddElement;
 import com.taobao.weex.ui.component.NestedContainer;
@@ -147,7 +145,6 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
 
   private Map<String,String> mContainerInfo;
 
-  private WXInstanceExceptionRecord mExceptionRecorder;
   public boolean isNewFsEnd = false;
 
   /**
@@ -470,7 +467,6 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
 
     mWXPerformance = new WXPerformance(mInstanceId);
     mApmForInstance = new WXInstanceApm(mInstanceId);
-    mExceptionRecorder = new WXInstanceExceptionRecord(mInstanceId);
     mWXPerformance.WXSDKVersion = WXEnvironment.WXSDK_VERSION;
     mWXPerformance.JSLibInitTime = WXEnvironment.sJSLibInitTime;
 
@@ -1407,7 +1403,6 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
   }
 
   public void onRenderError(final String errCode, final String msg) {
-    
getExceptionRecorder().recordReportErrorMsg("["+errCode+",onRenderError,"+msg+"]");
     if (mRenderListener != null && mContext != null) {
       runOnUiThread(new Runnable() {
 
@@ -1422,7 +1417,6 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
   }
 
   public void onJSException(final String errCode, final String function, final 
String exception) {
-    
getExceptionRecorder().recordReportErrorMsg("["+errCode+","+function+","+exception+"]");
     hasException = true;
     if (mRenderListener != null && mContext != null) {
       runOnUiThread(new Runnable() {
@@ -1533,7 +1527,6 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
   public synchronized void destroy() {
     if(!isDestroy()) {
       mApmForInstance.onEnd();
-      getExceptionRecorder().checkEmptyScreenAndReport();
       if(mRendered) {
         WXSDKManager.getInstance().destroyInstance(mInstanceId);
       }
@@ -1867,10 +1860,6 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
     return mApmForInstance;
   }
 
-  public WXInstanceExceptionRecord getExceptionRecorder() {
-    return mExceptionRecorder;
-  }
-
   public Map<String, Serializable> getUserTrackParams() {
     return mUserTrackParams;
   }
@@ -2094,7 +2083,6 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
         );
       }
       else {
-        getExceptionRecorder().isDownLoadBundleFailed = true;
         wxErrorCode = 
WXErrorCode.WX_DEGRAD_ERR_NETWORK_BUNDLE_DOWNLOAD_FAILED.getErrorCode();
         onRenderError(wxErrorCode,
                 response.errorMsg);
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java 
b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index 71f5a99..dcee5bb 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -2249,9 +2249,9 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
           e.printStackTrace();
         }
       }
-      if (METHOD_CREATE_INSTANCE.equals(function) && 
!instance.getExceptionRecorder().hasAddView.get()){
+      if (METHOD_CREATE_INSTANCE.equals(function) && 
!instance.getApmForInstance().hasAddView){
         reportErrorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE;
-      }else if ( METHOD_CREATE_INSTANCE_CONTEXT.equals(function) && 
!instance.getExceptionRecorder().hasAddView.get()){
+      }else if ( METHOD_CREATE_INSTANCE_CONTEXT.equals(function) && 
!instance.getApmForInstance().hasAddView){
         reportErrorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE_CONTEXT;
       }
       instance.onJSException(reportErrorCode.getErrorCode(), function, 
exception);
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java 
b/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java
index 2c40803..caf1920 100644
--- a/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java
+++ b/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java
@@ -24,7 +24,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import android.graphics.Rect;
 import android.text.TextUtils;
 import android.util.Log;
-import com.taobao.weex.BuildConfig;
 import com.taobao.weex.WXEnvironment;
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.WXSDKManager;
@@ -112,6 +111,7 @@ public class WXInstanceApm {
     private String mInstanceId;
     private IWXApmMonitorAdapter apmInstance;
     private Map<String, Double> recordStatsMap;
+    public final Map<String, Long> stageMap;
     private boolean isFSEnd;
     private boolean mHasInit = false;
     private boolean mEnd = false;
@@ -121,10 +121,12 @@ public class WXInstanceApm {
     public Rect instanceRect;
     public String reportPageName;
     public boolean hasReportLayerOverDraw = false;
+    public boolean hasAddView;
 
     public WXInstanceApm(String instanceId) {
         mInstanceId = instanceId;
         extInfo = new ConcurrentHashMap<>();
+        stageMap = new ConcurrentHashMap<>();
         IApmGenerator generator = WXSDKManager.getInstance().getApmGenerater();
         if (null != generator) {
             apmInstance = generator.generateApmInstance(WEEX_PAGE_TOPIC);
@@ -156,13 +158,10 @@ public class WXInstanceApm {
      * @param time unixTime ,plz use WXUtils.getFixUnixTime
      */
     public void onStageWithTime(String name,long time){
-        WXSDKInstance instance = 
WXSDKManager.getInstance().getAllInstanceMap().get(mInstanceId);
-        if (null != instance){
-            instance.getExceptionRecorder().recordStage(name, time);
-        }
         if (mEnd){
             return;
         }
+        stageMap.put(name,time);
         if(WXAnalyzerDataTransfer.isOpenPerformance){
             
WXAnalyzerDataTransfer.transferPerformance(mInstanceId,"stage",name,time);
         }
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceExceptionRecord.java
 
b/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceExceptionRecord.java
deleted file mode 100644
index cb86f73..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceExceptionRecord.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.performance;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import android.text.TextUtils;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.common.WXErrorCode.ErrorGroup;
-import com.taobao.weex.common.WXErrorCode.ErrorType;
-import com.taobao.weex.common.WXJSExceptionInfo;
-import com.taobao.weex.utils.WXExceptionUtils;
-import com.taobao.weex.utils.WXUtils;
-
-public class WXInstanceExceptionRecord {
-
-    public static int sErrorMsgSizeLimit = 5;
-    public static final String KEY_EXP_STAGE_LIST = "wxStageList";
-
-    private final Map<String,Long> mStageMap;
-    public final List<String> errorList;
-    public final String instanceId;
-    public final AtomicBoolean hasAddView;
-    public final AtomicBoolean hasDegrade;
-    private boolean mHasReportScreenEmpty = false;
-    private boolean mBeginRender = false;
-    public boolean isDownLoadBundleFailed = false;
-    public static boolean isReportWriteScreen = false;
-
-    public WXInstanceExceptionRecord(String instanceId) {
-        this.instanceId = instanceId;
-        this.mStageMap = new ConcurrentHashMap<>();
-        this.errorList = new CopyOnWriteArrayList<>();
-        this.hasAddView = new AtomicBoolean(false);
-        this.hasDegrade = new AtomicBoolean(false);
-    }
-
-    /**
-     * record error on instance (js、native)
-     * when checkEmptyScreen, report msg
-     */
-    public void recordErrorMsg(WXJSExceptionInfo exceptionInfo) {
-        if (isReportWriteScreen){
-            return;
-        }
-        if (null == exceptionInfo) {
-            return;
-        }
-        //FOR RENDER_ERROR , record twice
-        if (exceptionInfo.getErrCode().getErrorType() == 
ErrorType.RENDER_ERROR) {
-            mHasReportScreenEmpty = true;
-            return;
-        }
-        recordReportErrorMsg(exceptionInfo.toString());
-    }
-
-    public void recordReportErrorMsg(String appendStr){
-        if (!isReportWriteScreen){
-            return;
-        }
-        //screen has view, or degrade , will not be empty
-        if (TextUtils.isEmpty(appendStr) || hasAddView.get() || 
hasDegrade.get()) {
-            return;
-        }
-        if (errorList.size() > sErrorMsgSizeLimit) {
-            errorList.remove(0);
-        }
-        errorList.add(new StringBuilder()
-            .append("time ").append(System.currentTimeMillis())
-            .append(",msg ").append(appendStr).toString()
-        );
-    }
-
-    public void recordStage(String stage, long time) {
-        if (WXInstanceApm.KEY_PAGE_STAGES_RENDER_ORGIGIN.equals(stage)
-            || WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START.equals(stage)
-            || WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_END.equals(stage)
-            ) {
-            setBeginRender(true);
-        }
-        mStageMap.put(stage,time);
-    }
-
-    public void setBeginRender(boolean isBegin){
-        mBeginRender = true;
-    }
-
-    public String convertStageToStr() {
-        if (mStageMap.isEmpty()) {
-            return "noStageRecord";
-        }
-        List<Map.Entry<String,Long>> list = new 
ArrayList<>(mStageMap.entrySet());
-        Collections.sort(list, new Comparator<Entry<String, Long>>() {
-            @Override
-            public int compare(Entry<String, Long> o1, Entry<String, Long> o2) 
{
-                return (int)(o1.getValue() - o2.getValue());
-            }
-        });
-
-        StringBuilder builder = new StringBuilder();
-        for (Map.Entry<String,Long> entry : list) {
-            
builder.append(entry.getKey()).append(':').append(entry.getValue()).append("->");
-        }
-        return builder.toString();
-    }
-
-    private String convertExceptionListToString() {
-        if (errorList.isEmpty()) {
-            return "";
-        }
-        StringBuilder builder = new StringBuilder();
-        int i = 0;
-        for (String info : errorList) {
-            builder.append("error_").append(i).append(": 
").append(info).append("--->");
-        }
-        return builder.toString();
-    }
-
-    public void checkEmptyScreenAndReport() {
-        if (!isReportWriteScreen){
-            return;
-        }
-        if (isDownLoadBundleFailed || !mBeginRender || mHasReportScreenEmpty 
|| hasAddView.get() || hasDegrade.get()) {
-            return;
-        }
-
-        if 
(!mStageMap.containsKey(WXInstanceApm.KEY_PAGE_STAGES_CREATE_FINISH)){
-            return;
-        }
-
-        Long startExecJsTime = 
mStageMap.get(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_END);
-        if (null == startExecJsTime){
-            //too fast to quit
-            return;
-        }
-        long currentTime = WXUtils.getFixUnixTime();
-        long jsExecTime = currentTime - startExecJsTime;
-        //4s limit of instance stayTime (case in\quit very fast case)
-        if (jsExecTime <= 4000){
-            return;
-        }
-
-        String errorMsg;
-        if(errorList.isEmpty()){
-            errorMsg = "whiteScreen :never add view until page destroy,(js has 
execute > 4s,has createFinish)";
-        }else {
-            errorMsg =  "whiteScreen :history exception :"+ 
convertExceptionListToString();
-        }
-
-
-        Map<String,String> flagMap = new HashMap<>(4);
-        flagMap.put("wxBeginRender",String.valueOf(mBeginRender));
-        flagMap.put("wxHasAddView",String.valueOf(hasAddView.get()));
-        flagMap.put("wxHasDegrade",String.valueOf(hasDegrade.get()));
-        
flagMap.put("wxHasReportScreenEmpty",String.valueOf(mHasReportScreenEmpty));
-        flagMap.put("wxJSExecTime", String.valueOf(jsExecTime));
-
-        //WXExceptionUtils.commitCriticalExceptionRT(
-        //    instanceId,
-        //    WXErrorCode.WX_RENDER_ERR_JS_RUNTIME,
-        //    "checkEmptyScreenAndReport",
-        //    errorMsg,
-        //    flagMap
-        //);
-    }
-
-    public Long getStageTime(String key){
-        return mStageMap.get(key);
-    }
-
-
-
-    @Override
-    public String toString() {
-        return new StringBuilder()
-            .append(super.toString())
-            .append("wxStageList :").append(convertStageToStr())
-            .append("wxErrorList :").append(convertExceptionListToString())
-            .toString();
-    }
-}
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
index 59e2406..49eef03 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
@@ -56,7 +56,6 @@ public class GraphicActionCreateBody extends 
GraphicActionAbstractAddElement {
     if (instance.getContext() == null) {
       return;
     }
-    instance.getExceptionRecorder().setBeginRender(true);
 
     BasicComponentData basicComponentData = new BasicComponentData(getRef(), 
mComponentType, null);
     component = createComponent(instance, null, basicComponentData);
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java
index 6eb4f2f..d0f15dd 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java
@@ -188,10 +188,6 @@ public class WXEmbed extends WXDiv implements 
WXSDKInstance.OnInstanceVisibleLis
 
     @Override
     public void onException(WXSDKInstance instance, String errCode, String 
msg) {
-        if (null != instance){
-            //degrade or reload,should not report
-            instance.getExceptionRecorder().hasDegrade.set(true);
-        }
       if (mEventListener != null) {
         mEventListener.onException(mComponent, errCode, msg);
       }
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
index 3d797ed..33cd5cb 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
@@ -313,7 +313,7 @@ public abstract class WXVContainer<T extends ViewGroup> 
extends WXComponent<T> {
     }
     WXSDKInstance instance = getInstance();
     if (null != instance){
-      instance.getExceptionRecorder().hasAddView.set(true);
+      instance.getApmForInstance().hasAddView = true;
     }
   }
 
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/utils/WXExceptionUtils.java 
b/android/sdk/src/main/java/com/taobao/weex/utils/WXExceptionUtils.java
index 54edfe8..ce50ef2 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/WXExceptionUtils.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXExceptionUtils.java
@@ -18,8 +18,13 @@
  */
 package com.taobao.weex.utils;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
@@ -32,7 +37,6 @@ import com.taobao.weex.common.WXJSExceptionInfo;
 import com.taobao.weex.common.WXPerformance;
 import com.taobao.weex.performance.WXAnalyzerDataTransfer;
 import com.taobao.weex.performance.WXInstanceApm;
-import com.taobao.weex.performance.WXInstanceExceptionRecord;
 
 /**
  * Created on 2017/10/13.
@@ -106,7 +110,7 @@ public class WXExceptionUtils {
                 for (Map.Entry<String,String> entry: 
instance.getContainerInfo().entrySet()){
                     commitMap.put(entry.getKey(),entry.getValue());
                 }
-                
commitMap.put(WXInstanceExceptionRecord.KEY_EXP_STAGE_LIST,instance.getExceptionRecorder().convertStageToStr());
+                commitMap.put("wxStageList",convertStageToStr(instance));
                 String bundleTemplate = instance.getTemplate();
                 if (null == bundleTemplate){
                     bundleTemplate = "has recycle by gc";
@@ -116,9 +120,9 @@ public class WXExceptionUtils {
                 }
                 commitMap.put("wxTemplateOfBundle",bundleTemplate);
 
-                Long pageStartTime = 
instance.getExceptionRecorder().getStageTime(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START);
+                Long pageStartTime = 
instance.getApmForInstance().stageMap.get(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START);
                 if (null == pageStartTime){
-                    pageStartTime = 
instance.getExceptionRecorder().getStageTime(WXInstanceApm.KEY_PAGE_STAGES_RENDER_ORGIGIN);
+                    pageStartTime = 
instance.getApmForInstance().stageMap.get(WXInstanceApm.KEY_PAGE_STAGES_RENDER_ORGIGIN);
                 }
                 if (null != pageStartTime){
                     commitMap.put("wxUseTime", 
String.valueOf(WXUtils.getFixUnixTime() - pageStartTime));
@@ -141,11 +145,26 @@ public class WXExceptionUtils {
             adapter.onJSException(exceptionCommit);
         }
 
-        if (null != instance ){
-            instance.getExceptionRecorder().recordErrorMsg(exceptionCommit);
+        WXAnalyzerDataTransfer.transferError(exceptionCommit, instanceId);
+    }
+
+    private static String convertStageToStr(WXSDKInstance instance) {
+        if (null == instance || null == instance.getApmForInstance() || 
instance.getApmForInstance().stageMap.isEmpty()) {
+            return "noStageRecord";
         }
+        List<Entry<String, Long>> list = new 
ArrayList<>(instance.getApmForInstance().stageMap.entrySet());
+        Collections.sort(list, new Comparator<Entry<String, Long>>() {
+            @Override
+            public int compare(Entry<String, Long> o1, Entry<String, Long> o2) 
{
+                return (int)(o1.getValue() - o2.getValue());
+            }
+        });
 
-        WXAnalyzerDataTransfer.transferError(exceptionCommit, instanceId);
+        StringBuilder builder = new StringBuilder();
+        for (Map.Entry<String, Long> entry : list) {
+            
builder.append(entry.getKey()).append(':').append(entry.getValue()).append("->");
+        }
+        return builder.toString();
     }
 
 }
\ No newline at end of file

Reply via email to