在Amazon Linux上运行jFrog artifactory OSS v5.4.6。 在查看远程maven repos时,在管理GUI中使用Artifact Repository Browser时,会定期接收无限微调器。
系统日志显示stacktrace:
2017-09-21 12:31:17,884 [http-nio-8081-exec-11] [ERROR] (o.a.r.c.e.GlobalExceptionMapper:48) - null
java.lang.NullPointerException: null
at org.artifactory.ui.rest.model.artifacts.browse.treebrowser.nodes.JunctionNode.getRepoPkgType(JunctionNode.java:95) ~[artifactory-rest-ui-5.4.6.jar:na]
at org.artifactory.ui.rest.model.artifacts.browse.treebrowser.nodes.JunctionNode.fetchItemTypeData(JunctionNode.java:87) ~[artifactory-rest-ui-5.4.6.jar:na]
at org.artifactory.ui.rest.service.artifacts.browse.treebrowser.tree.BrowseTreeNodesService.execute(BrowseTreeNodesService.java:41) ~[artifactory-rest-ui-5.4.6.jar:na]
at ...
代码:
function() {
var t = 0,
e = function(t, e) {
return "function" != typeof t || t.replaced ? t : (e.replaced = !0, e)
};
if ("undefined" != typeof CustomEvent && "function" == typeof window.dispatchEvent) {
var n = function(e) {
try {
if ("object" == typeof e && (e = JSON.stringify(e)), "string" == typeof e) return window.dispatchEvent(new CustomEvent("lprequeststart", {
detail: {
data: e,
requestID: ++t
}
})), t
} catch (t) {}
},
o = function(t) {
try {
window.dispatchEvent(new CustomEvent("lprequestend", {
detail: t
}))
} catch (t) {}
};
"undefined" != typeof XMLHttpRequest && XMLHttpRequest.prototype && XMLHttpRequest.prototype.send && (XMLHttpRequest.prototype.send = e(XMLHttpRequest.prototype.send, function(t) {
return function(e) {
var u = this,
r = n(e);
return r && u.addEventListener("loadend", function() {
o({
requestID: r,
statusCode: u.status
})
}), t.apply(u, arguments)
}
}(XMLHttpRequest.prototype.send))), "function" == typeof fetch && (fetch = e(fetch, function(t) {
return function(e, u) {
var r = n(u),
c = t.apply(this, arguments);
if (r) {
var i = function(t) {
o({
requestID: r,
statusCode: t && t.status
})
};
c.then(i).catch(i)
}
return c
}
}(fetch)));
var u = function(t) {
return e(t, function() {
try {
this.dispatchEvent(new CustomEvent("lpsubmit"))
} catch (t) {}
return t.apply(this, arguments)
})
},
r = function() {
if (document && document.forms && document.forms.length > 0)
for (var t = 0; t < document.forms.length; ++t) document.forms[t].submit = u(document.forms[t].submit)
};
document && "interactive" === document.readyState || "complete" === document.readyState ? r() : window.addEventListener("DOMContentLoaded", r, !0), document.createElement = e(document.createElement, function(t) {
return function() {
var e = t.apply(this, arguments);
return e && "FORM" === e.nodeName && e.submit && (e.submit = u(e.submit)), e
}
}(document.createElement))
}
}();