Skip to content
This repository has been archived by the owner on Jun 3, 2021. It is now read-only.

[WEEX-608][Android] apm monitor logic modify #1506

Merged
merged 1 commit into from Sep 10, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -2045,7 +2045,7 @@ public void reportJSException(String instanceId, String function,
}

private void doReportJSException(String instanceId, String function, String exception){
WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
WXSDKInstance instance = WXSDKManager.getInstance().getAllInstanceMap().get(instanceId);
IWXJSExceptionAdapter adapter = WXSDKManager.getInstance().getIWXJSExceptionAdapter();
if (adapter != null) {
String exceptionId = instanceId;
Expand Down Expand Up @@ -2093,9 +2093,16 @@ private void doReportJSException(String instanceId, String function, String exce
}
}

WXErrorCode errorCode = (METHOD_CREATE_INSTANCE.equals(function) || METHOD_CREATE_INSTANCE_CONTEXT.equals(function))
?WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE
:WXErrorCode.WX_KEY_EXCEPTION_WXBRIDGE;

WXErrorCode errorCode;
if (METHOD_CREATE_INSTANCE.equals(function)){
errorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE;
}else if ( METHOD_CREATE_INSTANCE_CONTEXT.equals(function)){
errorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE_CONTEXT;
}else {
errorCode = WXErrorCode.WX_KEY_EXCEPTION_WXBRIDGE;
}

WXExceptionUtils.commitCriticalExceptionRT(exceptionId, errorCode,
function,
errorCode.getErrorMsg() + exception,
Expand Down
Expand Up @@ -230,9 +230,8 @@ public enum WXErrorCode {
/**
* renderErrorCode
*/
WX_RENDER_ERR_JS_CREATE_INSTANCE("-9600", "WX_RENDER_ERR_JS_CREATE_INSTANCE",ErrorType.RENDER_ERROR,ErrorGroup.JS),
WX_RENDER_ERR_JS_RUNTIME("-9601", "WX_RENDER_ERR for js error",ErrorType.RENDER_ERROR, ErrorGroup.JS),
WX_RENDER_ERR_NATIVE_RUNTIME("-9604", "WX_RENDER_ERR for js error",ErrorType.RENDER_ERROR, ErrorGroup.NATIVE),
WX_RENDER_ERR_JS_CREATE_INSTANCE("-9600", "white screen cause create instance failed,check js stack ->",ErrorType.RENDER_ERROR,ErrorGroup.JS),
WX_RENDER_ERR_JS_CREATE_INSTANCE_CONTEXT("-9601", "white screen cause create instanceContext failed,check js stack ->",ErrorType.RENDER_ERROR,ErrorGroup.JS),
WX_RENDER_ERR_LAYER_OVERFLOW("-9602", "WX_RENDER_ERR_LAYER_OVERFLOW", ErrorType.NATIVE_ERROR, ErrorGroup.NATIVE),
WX_RENDER_ERR_NULL_KEY("-9603", "WX_RENDER_ERR_NULL_KEY", ErrorType.NATIVE_ERROR, ErrorGroup.NATIVE),

Expand Down
Expand Up @@ -50,7 +50,7 @@ public class WXInstanceExceptionRecord {
private boolean mHasReportScreenEmpty = false;
private boolean mBeginRender = false;
public boolean isDownLoadBundleFailed = false;
public static boolean isReportWriteScreen = true;
public static boolean isReportWriteScreen = false;

public WXInstanceExceptionRecord(String instanceId) {
this.instanceId = instanceId;
Expand All @@ -65,6 +65,9 @@ public WXInstanceExceptionRecord(String instanceId) {
* when checkEmptyScreen, report msg
*/
public void recordErrorMsg(WXJSExceptionInfo exceptionInfo) {
if (isReportWriteScreen){
return;
}
if (null == exceptionInfo) {
return;
}
Expand Down Expand Up @@ -139,10 +142,14 @@ private String convertExceptionListToString() {
}

public void checkEmptyScreenAndReport() {
if (!isReportWriteScreen || isDownLoadBundleFailed){
if (!isReportWriteScreen){
return;
}
if (!mBeginRender || mHasReportScreenEmpty || hasAddView.get() || hasDegrade.get()) {
if (isDownLoadBundleFailed || !mBeginRender || mHasReportScreenEmpty || hasAddView.get() || hasDegrade.get()) {
return;
}

if (!mStageMap.containsKey(WXInstanceApm.KEY_PAGE_STAGES_CREATE_FINISH)){
return;
}

Expand All @@ -153,18 +160,16 @@ public void checkEmptyScreenAndReport() {
}
long currentTime = WXUtils.getFixUnixTime();
long jsExecTime = currentTime - startExecJsTime;
//3s limit of instance stayTime (case in\quit very fast case)
if (jsExecTime <= 3000){
//4s limit of instance stayTime (case in\quit very fast case)
if (jsExecTime <= 4000){
return;
}

String errorMsg;
if(errorList.isEmpty()){
errorMsg = mStageMap.containsKey(WXInstanceApm.KEY_PAGE_STAGES_CREATE_FINISH)
?"writeScreen :never add view until page destroy(js has execute > 3s)"
:"writeScreen :never add view even js executeTime > 3s";
errorMsg = "whiteScreen :never add view until page destroy,(js has execute > 4s,has createFinish)";
}else {
errorMsg = "writeScreen :history exception :"+ convertExceptionListToString();
errorMsg = "whiteScreen :history exception :"+ convertExceptionListToString();
}


Expand All @@ -175,13 +180,13 @@ public void checkEmptyScreenAndReport() {
flagMap.put("wxHasReportScreenEmpty",String.valueOf(mHasReportScreenEmpty));
flagMap.put("wxJSExecTime", String.valueOf(jsExecTime));

WXExceptionUtils.commitCriticalExceptionRT(
instanceId,
WXErrorCode.WX_RENDER_ERR_JS_RUNTIME,
"checkEmptyScreenAndReport",
errorMsg,
flagMap
);
//WXExceptionUtils.commitCriticalExceptionRT(
// instanceId,
// WXErrorCode.WX_RENDER_ERR_JS_RUNTIME,
// "checkEmptyScreenAndReport",
// errorMsg,
// flagMap
//);
}

public Long getStageTime(String key){
Expand Down
Expand Up @@ -188,6 +188,10 @@ public void onRefreshSuccess(WXSDKInstance instance, int width, int height) {

@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);
}
Expand Down