Announcing Chronon 4 ‘Ops’ Preview

Posted by Prashant Deva on December 4, 2012

It was never just about debugging. When we started making Chronon from day 1, the vision was always to do something greater with all the captured data. Thus, today we are announcing the preview of Chronon 4 ‘Ops‘; a revolutionary monitoring and analytics tool.

I will keep my words in this blog post to a minimum, and let the demo of the product do the talking. We have a full page describing Chronon 4.

Make sure to watch the video and read the whitepaper.

>> Learn more about Chronon 4

 

Chronon coming soon to Jelastic

Posted by Prashant Deva on November 26, 2012

Download

I am pleased to announce our new partner in crime Jelastic!

For those who don’t know, Jelastic is the new, super awesome PAAS for Java which allows you to easily deploy your Java applications and automatically scale them. Unlike AWS, Jelastic allocates server resources dynamically, so if your Java program is sitting idle, you are not getting charged for any extra cpu/memory. This also means you don’t have to deal with careful resource planning, since if your program needs needs more horsepower, Jelastic will automatically scale up and then down when not needed, charging you only for what was actually used.

For Jelastic users, begining in early Q1 2013, we are bringing the Chronon Recording Server. You will be able to install Chronon Recording Server with just a few clicks on your Jelastic apps and get rid of ever trying to reproduce bugs!

If you want to use Chronon on Jelastic right now, you can still use Embedded Chronon to do so.

Chronon and Vaadin join forces

Posted by Prashant Deva on November 16, 2012

Vaadinchronon

Discovering Vaadin

Last year when designing our Chronon Recording Server, we were looking to choose a nice web framework among the tons available for Java. Now, at Chronon, we love Java but we are no experts at javascript. In fact the weakly typed nature of javascript and the cross-browser issues makes me cringe at the thought of using it for large scale applications. That said, if you want to create a modern day web app, you gotta get down and dirty with it.

Thus our first choice was GWT which allows keeping all our code in Java and dealing with javascript at a minimum. However, when we started looking at GWT we realized it was really a disparate bunch of components and we still had to do a lot of work to create a ‘framework’ around it that would make those components work together well in an actual application.

That is when we ran into Vaadin; and it was love at first sight! Vaadin allowed us to create a full modern looking web application entirely in Java, almost like a Swing application, without even knowing there was any javascript/css involved. The components and themes out of the box were already beautiful and modern looking and to change the look we didnt have to resort to a ton of css hacks. It was nirvana and we now cant think of using any other framework!

Desperation turned love affair

That said, as is true with all things real life, we did run into some issues, of our own making mind you. Apparently we were using a 3rd party Vaadin component ‘ICEPush’, to allow automatic ajax-push in our web applications. The problem was that once in a while the ‘push’ would somehow cause the UI to become all gobbldygook. A lot of our customers were reporting this issue too. Although refreshing the page would make things go away, it was definitely annoying for the people using our product.

So we turned to Vaadin’s Commercial Support to see if they could solve the issue. And as would be expected, the support team asked to somehow replicate the issue on their side, so they could go with a debugger to look for the issue. Now here is the thing about the Chronon Recording Server, to replicate an issue in it, you have to setup a bunch of processes: the recording server process, the controllers, the java apps that will be recorded. Once you have done that, the support person has to play with the GUI for an indefinite amount of time before they run into that error, and *hopefully* they will have a breakpoint set in a location which will allow them to find the root cause of an issue. And if they miss putting the breakpoint in the right place, they have to try all this all over again. Also did I mention, we would have to send them our entire source code so they can look at where exactly we call icepush from our code. As you can at this point, we are at an almost impossible situation to reproduce and resolve the issue. It could take many, many weeks to solve this and we would end up spending a ton of money to purchase all those support hours.

That is when it dawned upon me. Why not use the Chronon Recorder to record our Chronon Recording Server! So we made a Chronon recording of the bug on our side and handed it to the Vaadin Support Team to playback in the Chronon Time Travelling Debugger. The bug was solved in 20 minutes flat!

Yes, something that would have taken weeks of time, and tons of effort on both teams to communicate the issues, and cost us thousands if not tens of thousands of dollars was solved in 20 minutes, with no communication required, other than sending the recording file!

Vaadin and Chronon, now together

As you can guess, both the Chronon and Vaadin executive team thought we should definitely take this to the next level. So from today, Chronon is now part of Vaadin’s Pro Account. If you are a Vaadin Pro account user, if you contact their support team with an issue, they will send you a free copy of Embedded Chronon which you can use to record the bug in your application. Then you can just send them the recording and that is all that is needed for the team to replicate and resolve your issue. No need to create sample programs or going through tons of hours of communication to set up things on the other side to reproduce the issue. You can even send them a recording created using Chronon Recording Server or Chronon Time Travelling Debugger and they will make use of it. 

We believe this partnership will help Vaadin users to not only rapidly create rich web applications but also not worry about any issues or long standing bugs in them.

Learn more about Vaadin and their amazing framework and their Pro Account Services.

 

Chronon 3.1: No more crashes during time travel

Posted by Prashant Deva on November 14, 2012

Its not even been 2 weeks and 3.1 is already here! We told you we will be releasing fast from now on.

3.1 is a bugfix release.

If you had any issues with the debugger, eg NullPointerExceptions, unpacking issues, etc; they should all be fixed now.

For the Recording Server, all issues with recorder crashing or corrupt recordings should be fixed. If you have an existing Chronon 3 Recording Server installation, you dont need to update the controller processes. Also if your Chronon 2 trial has expired, you should now see a form to automatically download an updated trial license (instead of needing to send us a mail).

We have had great feedback on the improved performance of Chronon! Enjoy!

See how Nokia uses Chronon to diagnose SMS processing issues

Posted by Prashant Deva on November 12, 2012

As Nokia has expanded into the Smartphone market and experienced new competitive pressures its reliance on a back end to complete connections and develop greater efficiencies and provide Value-Added Services, VAS, for media processing, gateway, and signalling. Rapid growth, the billions of signals being processed and reliability of the backend to process these requests has put insurmountable pressure on developers to quickly resolve complex issues and provide a reliable back end for customers.

Read More

Chronon Systems is an Eclipse Foundation Solutions Member

Posted by Prashant Deva on

Eclipse is an open source project which has been established as the de facto standard IDE for Java application development. The Chronon Eclipse plug-in enables you to record an application from Eclipse, and replay recordings in Eclipse, using our special time traveling debugger.

Inside Chronon 3 Recorder: How we achieved the magical speed boost

Posted by Prashant Deva on November 9, 2012

We released Chronon 3 last week with an order of magnitude performance improvement. Let’s take a look under the hood to see what makes it all tick!

The Recipe

Look at the source code of any computer program. You can pretty much predict what it is going to do, given you had some extra info like what branch will be taken and/or what the return value of a particular method call is.

 

In the code below, if you knew the value of ‘a’, you could predict whether ‘even’ or ‘odd’ will be printed.

 

Chronon 3′s recorder follows a similar principal. It instruments the bytecode of you program as its loaded and does static analysis on it to come up with an initial set of ‘predictions’ as to how your program will behave.
Image

Once your program is running, it keeps monitoring it against the initial set of predictions. If the execution at any time differs from what was ‘predicted’:

1. The prediction data structure is modified to take into account the new information.

Image_1

 

2. Recording data is generated to select the right ‘prediction’ from the structure. This usually takes only 1 to 4 bits.

3. If the prediction matches accurately though then no data is generated at all!

Image_2

See it in Action

For example, consider the code below:

 

Assume there are 2 threads that call the method process().

The first thread has an object of type Foo and calls Foo.bar(), which matches the prediction made by the recorder exactly, so no data is generated at that point for that thread.

The second thread calls has an object of FooSub instead, and thus ends up calling FooSub.bar().

Now here is where things get interesting. For this thread only, the prediction structure is adjusted to account for this new method call. Then a single bit is stored to select the right method call from the prediction structure. The previous thread, on the other hand, which keeps Foo.bar() keeps generating no data as its prediction is accurately matched.

Results

As you can see that the new prediction mechanism helps in saving a ton of data that would otherwise have been generated and even when data is indeed generated, it’s only very minimal. Apart from the example given above, we have a whole bunch of predictions inside the Chronon 3 Recorder. We now even have a pluggable architecture where we can keep plugging in more of these predictions and constantly increasing the speed of the recorder, without needing to wait an entire year.

So far the current architecture has worked extremely well and almost all our previous users running into OutOfMemory issues are now able to record easily!

See how Nokia uses Chronon

Posted by Prashant Deva on November 5, 2012

We sat down with Harikishore Tadigotla of Nokia to see how Nokia uses a combination of Chronon Recording Server and Chronon Time Travelling Debugger to diagnose their SMS processing issues.

>> Read full Nokia Case Study

Some tidbits from the case study:

Challenges:

“Before Chronon, we used to take a huge amount of time in reproducing production bugs. Some bugs were simply impossible to reproduce since our local environments were never exact replicas of production environment.”

Solution

“Reproducing the bugs in our local environments was usually a very huge and cumbersome process as it involved a long and tedious process to redeploy server builds onto local environments before we got to verify them. Verifying local environments involves running simulations of SMS requests, which was not very accurate. Using Chronon we could switch to the payload of accurate SMS requests, which increased the accuracy of tests run in local environments.”

Results

“The primary benefit is the ease with which bugs can be reproduced ‘offline’. Another major benefit we found with using Chronon is it offers an understanding the existing codebase in a large team. This was found to be particularly helpful in our team since we had a huge codebase and only few developers had familiarity to major portions of our codebase.”

 

To get the full details, read the entire Nokia Case Study.

 

Bugfix update 3.0.8

Posted by Prashant Deva on November 3, 2012

For those seeing NullPointerExceptions in the Debugger with the Chronon 3 udpate, this should fix that.

Also since due to ‘per thread time’, we run each thread truly independently, if you view the value of a variable that was created in a different thread, chronon will try to guess its value. >95% of the time the value will be correct, but even then the debugger marks such values as <<fuzzy>>.

Fuzzy_values

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