Blog Moved

Future posts related to technology are directly published to LinkedIn
https://www.linkedin.com/today/author/prasadchitta

Thursday, June 26, 2008

Workaround - Best Practices

I find myself in a lot of situations to provide a "workaround"

Few quick properties of workarounds:

Workaround generally leaves the root cause not attended. A conscious effort required to get the development identify and fix the root cause of the problem.

Workaround generally forgotten in the documentation and would lead to an unknown problem at a future time. (In most cases another workaround nullifying the original workaround is suggested)

so,

Document the workaround, possible root cause and follow the "process" to get the original problem identified and fixed in the base product. also,

clearly communicate to the customer and make sure they mention the workaround when logging a new related problem (or bug) against the product in future.

Otherwise, customer will have "workarounds", the support team a "nightmare" and the product "a lot of bugs"

Friday, June 13, 2008

Of Memory Leaks and Core Dumps

Even a very well tested product have these basic problems when finally put into the production.

This statement is not an exaggeration of truth. It is Truth. There are multiple software components and multiple platforms on which these components are made to run. For example an embedded JVM may process the logoff signal from a remote desktop connection on a Windows server.

The Java Runtime Bug cause the embedded application to crash and dump core on a Windows platform.

Errors like this are hard to debug and fix.

Memory leaks are another complex thing to debug and fix when it happens on a Live/Production environment. It is best to identify the leaks during the development/testing phases. Example of such errors are the ORA-04030 errors showing the out of process memory on an oracle database running a production application.
When applications use the connection pooling and hold the connection for a long duration and application carries out complex and divergent transactions through these connections it gets quite challenging to identify and fix the problems.

Bottom line: The rigor of performance and scalability testing is very crucial in a product development life cycle.