Missing httpResponseCode attribute in Transaction events when updating agent (from 3.30.1 to 4.5.0)

Hi, we’ve recently updated one of our apps in order to start using the 4.5.0 Java agent. Before that we were using the 3.30.1 version. Our main goal with this was to start using the new distributed tracing feature.

However, once updated, we noticed our new Transaction event didn’t have the httpResponseCode attribute set. We could confirm this by both querying the Transactions at Insights, and looking at the Transaction details at the APM.

Diving at the docs, I found that they state that the default attributes may vary depending on the agent. I know it’s been a while, but has there been any changes related to this default attribute since the 3.30.1?
What’s even more strange is I am actually seeing the httpResponseCode gets populated for Transactions that ended up responding 500, but not for those that respond an OK/200.

Thanks in advance,
Juan

2 Likes

Hi @jberrueta,

In terms of how the agent would handles attributes, I don’t think much had changed since v3.30.1. However, we did apply a fix to v3.48.0 and v3.34.1 of our Java Agent, to resolve an issues - where we noticed errors outside of a transaction did not contain custom attributes on the events and missing custom attributes with transactions while using the agent’s API respectively. As next step, kindly ensure that the proper upgrade process was followed as documented to ensure we are not missing any other config setting or modules:

https://docs.newrelic.com/docs/agents/java-agent/installation/upgrade-java-agent

Regards,

Hi there,

We are experiencing same behavior @jberrueta explained. Here are two examples,

  • one showing NULL values for httpResponseCode= SELECT httpResponseCode FROM Transaction WHERE appName = ‘Flights-LCC’
  • one showing httpResponseCode before upgrading from 3.30.1 to version 4.10.0= SELECT count(*) FROM Transaction WHERE appName IN (‘Flights-LCC’) facet httpResponseCode SINCE 7 days ago TIMESERIES AUTO

Application link
Dispatcher: Apache Tomcat
Version: 6.0.47

Let me know if you need further information.

Regards

2 Likes

Hi fgaule,

It looks like you are using an older Tomcat version which is no longer supported by our newer agents and End of Life by Apache.

If you check out our compatibility page you will see the list of supported application servers with the newer agent versions:

It is likely that our instrumentation packages have changed since we last supported Tomcat version 6.

In Insights any transaction that is recorded as Web Transaction, in other words has a transactionType attribute of Web will still record the httpResponseCode.

In this case it is likely that the transactions are not being recorded as Web transactions from Tomcat 6 due to having no supported instrumentation packages included with the agent.

My only recommendation here would be to upgrade your Tomcat version to at least version 7 and I believe that your transactions will begin reporting correctly as Web Transactions again should contain a valid httpResponseCode value.

Regards,

1 Like

Hi @jmcevoy

I know I’m using an older Tomcat version, my bad, we are going to upgrade it soon. When i read your message i was convinced that was the reason we were not getting 200 http response status until I found another app using same old Tomcat (same Java and NewRelic) version reporting successfully.

How is that possible?

Regards

It is interesting that the behavior is different. Both instances are using 4.10.0 so it would be interesting to see how the Java agent is handling the transaction activity separately. Logging analysis is how I would see why there is a difference. It will tell how the agent sees the activity and what it does with the information.

For troubleshooting, I use more than 5 minutes and less then 10 minutes of finest. More than 5 minutes should ensure a complete harvest cycle but more than 10 minutes with most Java applications at the most verbose level can be a bit overwhelming. Make sure that during that time the calls to the methods involved are getting plenty of traffic so the activity shows up in the log.

Grep is your friend or a tool that allows for flexible searching. Some log files can be fairly large so you want to make sure that the tool whether it is Sublime, Notepad++ or the text editor of your choice has enough memory available to open and manipulate the text.

First search for the name of the method. The agent will assign an ID in a hash (hex) value that you can then use to search on to follow the activity with the agent. One of the lines for each transaction is the setting of the HTTP response code.

If you get stuck, reach out and Support can help with understanding what the agent is saying and doing.

2 Likes

Hi Jeanie,

We have done more tests in a controlled environment where we startup the app + agent, send some requests and shutdown.

NewRelic app: https://rpm.newrelic.com/accounts/294954/applications/6740119
Requests showing no 200 httpResponseCode
image

Grepping log show me no httpResponseCode is being sent to relic when status is 200.
I can give you agent log if you create a ticket for this.

Regards!

Hey @fgaule - I see you now have a ticket open with our Support team (#340183) - Please do post back here with the resolution you come to in that ticket :slight_smile: