The problem as defined in that thread is that Chrome doesn't seem to allow distributed traces to propagate into backends from at least version 72+. Testing on version 71 shows that the distributed trace is working.
Our worry is that we've made a bit of distributed trace instrumentation work in the past that we are afraid would no longer work in newer Chrome versions when we go live in a few weeks. We are still on development and have not tested this scenario on all our apps but the POC in the above thread seems to paint a bleak picture.
We are wondering if you have any information on this.
@Hamidreza, I've set up a similar stack in Linode and I will provide you access to it to see what is happening and even to see config settings. I'll provide access via PM. Please let me know if you need anything else.
Thanks for the reproduction.
I have now investigated the application and it seems that the transaction is discarded because it doesn't have any spans. The reason for this is that the transaction is ended before the XHR span is finished. In the following code the transaction is ended the first time the state changes which is not the time the request has finished (and therefore the XHR span ends)
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
resp = http.response;
document.getElementById("txtItemColorDescribed").value = resp
}
transaction.end();
}
http.send(null);
A solution to this would be:
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
resp = http.response;
document.getElementById("txtItemColorDescribed").value = resp
setTimeout(function(){transaction.end();}) // setTimeout is used because we can not be sure of the order of execution of event listeners
}
}
http.send(null);
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.