Support for Dynamic Proxy classes

Posted by Prashant Deva on August 19, 2011

We have now added full support for Dynamic Proxy object in todays release (Chronon 1.8.8).

Recorder Support

Chronon will now instrument any Dynamic Proxy class that implements any interface that is ‘included’ in your Recorder Configuration.

Time Travelling Debugger Support

The Time Travelling Debugger knows about Proxy classes and will allow stepping inside any call made on a proxy object.

  • Stepping In will take you directly to the ‘Invocation Handler’ call corresponding to the Dynamic Proxy class.
  • Stepping Out works likewise and Stepping Out from an ‘Invocation Handler’ of a Proxy class will direcly take you to the call site of the original method called on that Proxy.
    Proxy-stepinProxy-stepin2Proxy-stepout

Chronon Recording Server Support

The Recording Server will now correctly identify the relevant Dynamic Proxy classes to instrument during a dynamic Start/Stop.

In order to get the Dynamic Proxy support in your Recording Server installation, you only need to update the ‘recorder.jar’ file for all applications, which can be found in the Standalone Recorder Pack on the downloads page.

Chronon 1.8.7 and release mishaps

Posted by Prashant Deva on August 16, 2011

Today we had a bit of a mishap with the 1.8.0 release.

Mishap Details

Soon after we released 1.8.0, we discovered a fix for a longstanding bug in the Recorder which would throw exceptions while instrumentation.

Since we like to get features and bugfixes out as soon as possible to our users,  we immediately updated the Recorder and Eclipse plugin to 1.8.5.  We even starting sending out mails to some evaluators to update their Eclipse plugins or Recording Server installations to 1.8.5.

However, as we were doing so, somebody found a bug in the new 1.8.5 release! Apparently the fix we had put in introduced another bug which caused local variable assignments to be not recorded!

But all is good now :)

So here we are now, everything is finally fixed and we have updated the version to 1.8.7. This should solve both the exception issue and the issue with local variables not being recorded.

  1. Please update your eclipse plugins
  2. If you are using the Chronon Recording Server version 1.7 or higher, you just need to download the Standalone Recorder pack and update your recorder.jar file to get the fix.
    If you have a version of the Recording Server < 1.7, contact us to get the latest binaries. 

Sorry for all the confusion and next time we wont be so hasty in putting out a bugfix which we haven’t thoroughly tested :)

 

Chronon 1.8 released

Posted by Prashant Deva on August 15, 2011

Another week, another release!

This time we have a bunch of productivity boosing features our users have been asking for:

Keyboard Shortcuts

Yes, they are finally here! There is now a keyboard shortcut for almost every operation in Chronon. Its amazing how fast debugging is with these!

Keyboardshortcuts_6Keyboardshortcuts_2Keyboardshortcuts_4

 

Look at the documentation for the key mapping for all the keyboard shortcuts.

Solaris support

For all the Solaris fans, Chronon is now officially supported on Solaris x86 and 864 (32 bit and 64 bit) platforms!
Native agent binaries are available with the Chronon Eclipse plugin and the Standalone Recorder download pack.

Double click to jump

In views like Exceptions View, Threads View, Current Line view, you can just double click on the appropriate exception, thread,  method to jump directly to it. No need to click the ‘step to’ button. More productivity boost!

Faster Stack View

The Stack view now uses caching and is much, much faster. Along with the keyboard shortcuts for stepping, you will find using Chronon blazingly fast!

Recorder bugfixes

We fixed some bugs with the Recorder. If you are using the Chronon Recording Server 1.7 or higher, you can download the Standalone Recorder pack and use the recorder jar from there to get the bugfixes in your Recording Server installation.

 

Evaluation expired??

If your Chronon evaluation has expired, but you still want to try out these awesome features, contact [email protected] and we will provide you with an extended evaluation!

So go ahead and Download now!

While you are at it, don’t forget to check out the Chronon Recording Server!

 

Using Mindmaps for design

Posted by Prashant Deva on August 14, 2011

I recently came across Mind maps.

I find them to be excellent for designing/architecting. Much better than a design document with bullet points and long descriptions.

If you think about it, take any problem, you usually end up first breaking down the high level concepts, then working your way down to the details of each in a hierarchical manner. Mind maps allow that naturally, and I have found them better than anything else to put thoughts on paper.

Below is a mind map showing the design of the ‘Open External Recording‘ dialog in Chronon.

Open_recording

Notice how easy it is to see each case and go all the way down to the minute implementation details of each. It is much more consice that a long design document and conveys the information much more clearly.

-Xmx is hurting the usability of Java

Posted by Prashant Deva on August 11, 2011

How would it feel if every time you opened a program or a website it asked you how much memory it could use?

Or even worse it by itself decided some maximum memory value for you which is far lower than the amount of ram on your system. How would you then feel if that said program or website threw an error in your face complaining about memory, all this while you had more than enough ram on your system for it to use?

What Java does

Apparently that is exactly how Java programs behave or rather the JVM implementations compel java programs to behave. 

  1. Either you specify an -Xmx value and try to guess memory usage before hand, or 
  2. Depending on the vendor, version or implementation the JVM will choose its own maximum heap size (which is almost always lower than the total ram on your machine).

What it should Do

Now I am sure there are good technical reasons why this is the case. However I will cite the age old programming quote:

First make it correct, then make it fast.

In this case going Out Of Memory on a system which does have enough memory is plain incorrect. Any program on a system can due to unforeseen circumstances might temporarily require more memory than its user thought it would. It could be that disk IO became slow or there were suddenly a traffic spike for a few minutes, etc. Operating Systems found a way around this a long time ago using virtual memory and disk swapping. Sure swapping causes your program to go slow but it doesn’t outright crash it.

I have 24gb of ram on my machine (since ram is super cheap nowdays). I should never see an OutOfMemoryException. Yet time and again I see it pop up in Java programs, even when they were using a mere fraction of my 24 gigs of ram.

Real World Experience

We have so many cases of people using Chronon on 64 bit machines and getting Out Of Memory Exceptions.  We keep getting queries like “but my machine has 4 gigs of ram” and we always have to say “but did you allow the jvm to use it? whats your -Xmx value?“. 

Since the performance of Chronon is greatly impacted by memory, with our Time Traveling Debugger Eclipse plugin, during installation we bump up the -Xmx value of Eclipse. Although all this does is allow Eclipse to use the extra memory if needed, due to the common misconception out there, people think just by setting a higher -Xmx value Eclipse is magically using more memory than before.

Conclusion

All said and done, I think the need to specify a max heap or randomly choosing a heap size less than the system memory highly impacts the usability of Java programs in a 64 bit world, and leads to confusion with people who get Out Of Memory errors even though they have plenty of memory. The performance gains are not worth the errors and confusion.

 

 

Chronon Recording Server 1.7

Posted by Prashant Deva on August 10, 2011

Today we are updating the Chronon Recording Server to 1.7.

Apart from the obvious download related bug fix, this release contains 2 new features:

1. Active Heap Info

Crs17-heap

Now you can see the heap size of the application you are recording.
Note that for performance reasons, the heap size is updated only every 5 seconds.

2. Better Recorder Start/Stop Progress Info

Crs17-instrument

Now when you start/stop the recorder on your application:

  1. The progress bar is more accurate
  2. You can see exactly which class is being instrumented

Upgrading

Since this release required changes to the communication protocol, if you are upgrading your existing Recording Server installation, you will need to update all 3 components : recorder, controller and recordingserver.war

If you arent already using the Chronon Recording Server, go get it now!

 

Chronon Recorder saves the Chronon Recording Server

Posted by Prashant Deva on August 8, 2011

 

The Problem

Last week we had a big issue on our hands. A lot of people trying out the Chronon Recording Server beta were reporting they were getting corrupt files when they would download a recording from the Recording Server UI. The issue was occurring at random. Sometimes the files would be corrupt and sometimes not. And try as we might we just weren’t able to reproduce the issue on our end. We looked through our code and made a bit of change to what we thought could have been the issue and sent out the updated binaries, just hoping the issue was fixed.

But luck wasn’t on our side, our blind, shot-in-the-dark fix did not work and we were getting overwhelmed with support requests of corrupt downloads. On our end we were trying everything possible, like introducing lag, reducing bandwidth, adding more machines,etc; but nothing was able to reproduce the issue on our end.

Solution

Then finally it struck me. We would use Chronon to debug Chronon!

I asked one of our customers to take the Chronon Recorder and use it to record the Chronon Recording Server. Thus the next time he ran into the corrupt download issue, he simply took the Chronon recording of the Chronon Server and sent it over to me. Once we had the Chronon recording it was only a matter of minutes till we drilled down to the root cause and solved the issue!

Conclusion

This was one of first times we ourselves experienced the power of having a tool like Chronon. Had it not been for the Chronon Recorder we would still be pulling our hair trying to reproduce the issue and then debug it. Our customers would have continued to grow unhappier with our product, our credibility would be on the decline and it would eventually affect our revenues. If you have had to support products out in the field, you know how it is when an unhappy customer calls you about an issue and you have to make him go through all these hoops to try to figure out the root cause, making him even more unhappy in the process, till he eventually just gives up your product altogether.

With Chronon, all this just vanishes! The customer in this case just sent us the recording and no other communication was needed. We have the bug fixed now and tests in place. If you are a company that prides itself on customer support or, like Chronon Systems, pretty much depends on it to drive sales and revenue, then with Chronon you have an invaluable tool that can literally change the public perception of your company. As far reaching as this may sound, we can stand behind this statement now since last week we got to experience this for ourselves.

 

Chronon 1.6 released

Posted by Prashant Deva on August 4, 2011

The major theme of this release is improving the workflow of downloading a file from the Chronon Recording Server and opening it in Eclipse.

There are two major features to that purpose:

Open .tar file directly

The ‘Open Recording’ dialog now allows you to point direcly to a .tar file.
It will automatically do the job of extracting the .tar file and unpacking it.

Dlgbox

No longer do you have to manually extract the .tar file and create folders to extract and unpack them.

Specify Source Lookup paths

This has been a big request for some time.

 

A lot of times you have multiple projects in a workspace which have the same package and class names.
When you open an external recording you want to tell Chronon which specific project to look into to find the correct class when debugging the recording.

Samepackage

To that end, the ‘Open Recording’ dialog now allows you to create ‘Source Lookup’ definitions.
Creating and selecting a Source Lookup definition while opening an external recording instruct the Chronon Eclipse plugin to look only inside the projects you specify for displaying source code.

Select_source_lookupEdit_def

You can read more about these features in our documentation.

So go ahead and upgrade your Chronon installation!

 

 

Recording Server now the official way to Record outside Eclipse

Posted by Prashant Deva on July 26, 2011

We have decided to deprecate the developer mode a little bit. It is now used only by the eclipse plugin while recording from within eclipse.

The Chronon Recording Server is now the official way for Recording outside Eclipse.

The reasons for doing so are:

  1. The developer mode config files were hard to create with the many configuration options.
    The server mode config file require only a ‘name’ value.
  2. The process of creating the config, doing the recording, transferring the recording to the local machine to debug was too manual.
    This is exactly what the Recording Server was designed to eliminate.
  3. Developer mode didnt support dynamic start/stop or support for long running programs.
    Turns out people who did want to record outside eclipse wanted exactly that. They wanted to skip the long initialization of their web servers and start recording after the web server had initialized and they wanted to record for long periods of time. This is exactly what the Recording Server was designed for.
  4. No easy way to organize and view remote recordings.
    With the Recording Server you can easily view all the recordings for every java application on every machine.

While the Recording Server may require a bit of an initial setup due to the need to install the Controller process on each machine, even this takes less than a minute and needs to be done only once.  

Thus due to all the benefits described above we believe the Recording Server is the way to move forward for recording outside of Eclipse. It removes all the manual process which was previously required and replaces it with a nice, clean and easy to use GUI.

« Previous 1 2 3 4 5 6 7 8 9 10 11 Next »