cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sampath Uppula <SU0064...@TechMahindra.com>
Subject RE: Cayenne 3.0.2 - Global exception - frequent issue in my application
Date Tue, 08 Apr 2014 11:19:29 GMT
Hi Andrus,
Below is the Stacktrace for Global exception.
This is very common issue in my application, please suggest a way to resolve this issue.

-------------------------------------------------------------------------------------------------------

a:175)
        at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTa
gSupport.java:42)
        at org.apache.jsp.eConIndex_jsp._jspx_meth_s_005faction_005f0(eConIndex_
jsp.java:94)
        at org.apache.jsp.eConIndex_jsp._jspService(eConIndex_jsp.java:66)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:432)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3
90)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
.doFilter(StrutsPrepareAndExecuteFilter.java:88)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.apache.cayenne.conf.WebApplicationContextFilter.doFilter(WebAppli
cationContextFilter.java:93)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrid
eFilter.java:125)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at com.techm.econvergence.encodingFilter.CharacterEncodingFilter.doFilte
r(CharacterEncodingFilter.java:23)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
936)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1004)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin
t.java:1822)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicatio
ns link failure

The last packet successfully received from the server was 222,640,374 millisecon
ds ago.  The last packet sent successfully to the server was 0 milliseconds ago.

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1
118)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3055)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2941)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3489)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
        at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4956)

        at org.apache.cayenne.conn.PooledConnectionImpl.getConnection(PooledConn
ectionImpl.java:128)
        at org.apache.cayenne.conn.PoolManager.uncheckConnection(PoolManager.jav
a:369)
        at org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java:35
3)
        at org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java:33
0)
        at org.apache.cayenne.access.DataNode$TransactionDataSource.getConnectio
n(DataNode.java:364)
        at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:248)
        ... 70 more
Caused by: java.net.SocketException: Software caused connection abort: recv fail
ed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.ja
va:114)
        at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNe
cessary(ReadAheadInputStream.java:161)
        at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.ja
va:189)
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2499)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2952)
        ... 82 more
org.apache.cayenne.CayenneRuntimeException: [v.3.0.2 Jun 11 2011 09:52:20] Globa
l exception.
        at org.apache.cayenne.access.DataDomainQueryAction.nextGlobalException(D
ataDomainQueryAction.java:553)
        at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:258)
        at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQu
eryAction.java:422)
        at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomain
QueryAction.java:69)
        at org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomai
nQueryAction.java:395)
        at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java
:850)
        at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction
(DataDomainQueryAction.java:392)
        at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQue
ryAction.java:121)
        at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:743)
        at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectConte
xtQueryAction.java:334)
        at org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(Obj
ectContextQueryAction.java:104)
        at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContex
tQueryAction.java:91)
        at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1293)
        at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1
282)
        at com.techm.econvergence.util.RequestDelegate.getFilterVaulesListForQue
ry(RequestDelegate.java:2737)
        at com.techm.econvergence.dashboard.util.DashboardRequestDelegate.getCus
tomerDetail(DashboardRequestDelegate.java:2232)
        at com.techm.econvergence.action.MaineConvergenceAction.<init>(MaineConv
ergenceAction.java:45)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:13
1)
        at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:16
2)
        at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:15
1)
        at com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:
121)
        at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultA
ctionInvocation.java:300)
        at com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInv
ocation.java:400)
        at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy
.java:194)
        at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.j
ava:63)
        at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(St
rutsActionProxyFactory.java:39)
        at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(D
efaultActionProxyFactory.java:58)
        at org.apache.struts2.components.ActionComponent.executeAction(ActionCom
ponent.java:289)
        at org.apache.struts2.components.ActionComponent.end(ActionComponent.jav
a:175)
        at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTa
gSupport.java:42)
        at org.apache.jsp.eConIndex_jsp._jspx_meth_s_005faction_005f0(eConIndex_
jsp.java:94)
        at org.apache.jsp.eConIndex_jsp._jspService(eConIndex_jsp.java:66)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:432)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3
90)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
.doFilter(StrutsPrepareAndExecuteFilter.java:88)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.apache.cayenne.conf.WebApplicationContextFilter.doFilter(WebAppli
cationContextFilter.java:93)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrid
eFilter.java:125)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at com.techm.econvergence.encodingFilter.CharacterEncodingFilter.doFilte
r(CharacterEncodingFilter.java:23)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
936)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1004)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin
t.java:1822)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicatio
ns link failure

The last packet successfully received from the server was 108,030,871 millisecon
ds ago.  The last packet sent successfully to the server was 0 milliseconds ago.

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1
118)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3055)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2941)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3489)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
        at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4956)

        at org.apache.cayenne.conn.PooledConnectionImpl.getConnection(PooledConn
ectionImpl.java:128)
        at org.apache.cayenne.conn.PoolManager.uncheckConnection(PoolManager.jav
a:369)
        at org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java:35
3)
        at org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java:33
0)
        at org.apache.cayenne.access.DataNode$TransactionDataSource.getConnectio
n(DataNode.java:364)
        at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:248)
        ... 70 more
Caused by: java.net.SocketException: Software caused connection abort: recv fail
ed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.ja
va:114)
        at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNe
cessary(ReadAheadInputStream.java:161)
        at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.ja
va:189)
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2499)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2952)
        ... 82 more

-------------------------------------------------------------------------------------------------------


Thanks ,
Sampath Uppula
________________________________________
From: Andrus Adamchik [andrus@objectstyle.org]
Sent: Monday, March 10, 2014 4:59 PM
To: user@cayenne.apache.org
Subject: Re: Cayenne 3.0.2 - Global exception - frequent issue in my application

A DataContext exists without a live database connection. Only when you do something with it
(like run a query, or commit some objects) it opens a connection, and then releases it immediately
when the operation is done.

Andrus

On Mar 10, 2014, at 2:19 PM, Sampath Uppula <SU0064323@TechMahindra.com> wrote:

> Hi,
> I am really wondering even after getting the DataContext object why I am facing the issue
to connect the database.
> Object Context :
>>> org.apache.cayenne.access.DataContext@50ab9eed
>
> The reason to disable the stack trace in live is to reduce the log size and improve the
performance.
>
> Thanks ,
> Sampath Uppula
>
> -----Original Message-----
> From: Andrus Adamchik [mailto:andrus@objectstyle.org]
> Sent: 10 March 2014 16:32
> To: user@cayenne.apache.org
> Subject: Re: Cayenne 3.0.2 - Global exception - frequent issue in my application
>
> Then it is impossible to tell what really happened. This can be something simple like
a JDBC connection error, or anything else really. But we don't know.
>
> Could you turn on logging of stack traces in a live environment? Why is it disabled?
>
> Andrus
>
>
> On Mar 10, 2014, at 1:58 PM, Sampath Uppula <SU0064323@TechMahindra.com> wrote:
>
>> Hi Andrus,
>> Thanks for the quick update.
>> But I cannot provide the stack trace right now because this issue is occurring in
the live environment.
>>
>> I am using the below jars related to Cayenne in the web application which is deployed
on Tomcat 7.
>> cayenne-client-3.0.2.jar
>> cayenne-modeler-3.0.2.jar
>> cayenne-server-3.0.2.jar
>> cayenne-tools-3.0.2.jar
>>
>> Please suggest a way to resolve this issue.
>>
>> Thanks,
>> Sampath Uppula.
>>
>> -----Original Message-----
>> From: Andrus Adamchik [mailto:andrus@objectstyle.org]
>> Sent: 10 March 2014 16:09
>> To: user@cayenne.apache.org
>> Subject: Re: Cayenne 3.0.2 - Global exception - frequent issue in my
>> application
>>
>> Hi there, do you have a full stack trace of the exception? It should reveal lots
of useful details.
>>
>> I am also confused with this class present in your logs: org.apache.cayenne.modeler.util.ModelerLogger.
>>
>> Andrus
>>
>> On Mar 10, 2014, at 1:29 PM, Sampath Uppula <SU0064323@TechMahindra.com> wrote:
>>
>>> Hi,
>>> I am using Cayenne 3.0.2 with Mysql database.
>>>
>>> In my email scheduler, I am using the DataContext object to read the data from
the database.
>>> I am getting the DataContext properly but when I am executing the below line
I am getting the Global exception.
>>>
>>> dashboardfilterCreateObj =
>>> DataObjectUtils.objectForPK(context,DashboardFilterCreate.class,
>>> reportId);
>>>
>>> Can you please throw some light on it to resolve the issue.
>>>
>>> [INFO] [getDataContext],[19],[@@@@@@ DataContext is returned] [INFO]
>>> [emailDailyReportScheduler],[2777],[Object Context :
>>> org.apache.cayenne.access.DataContext@50ab9eed]
>>> [INFO] [emailDailyReportScheduler],[2781],[-- Report ID is : 11]
>>> [INFO]
>>> [org.apache.cayenne.modeler.util.ModelerLogger],[info],[78],[--- will
>>> run 1 query.] [INFO]
>>> [org.apache.cayenne.modeler.util.ModelerLogger],[info],[83],[***
>>> error.] [ERROR] [emailDailyReportScheduler],[2843],[Exception
>>> occurred in emailDailyReportScheduler(). Exception Details : [v.3.0.2
>>> Jun 11
>>> 2011 09:52:20] Global exception.]
>>>
>>> Thanks,
>>> Sampath Uppula.
>>>
>>> =====================================================================
>>> = ======================================================
>>> Disclaimer:  This message and the information contained herein is proprietary
and confidential and subject to the Tech Mahindra policy statement, you may review the policy
at http://www.techmahindra.com/Disclaimer.html externally http://tim.techmahindra.com/tim/disclaimer.html
internally within TechMahindra.
>>> =====================================================================
>>> = ======================================================
>>>
>>>
>>>
>>> =====================================================================
>>> = ======================================================
>>> Disclaimer:  This message and the information contained herein is proprietary
and confidential and subject to the Tech Mahindra policy statement, you may review the policy
at http://www.techmahindra.com/Disclaimer.html externally http://tim.techmahindra.com/tim/disclaimer.html
internally within TechMahindra.
>>> =====================================================================
>>> = ======================================================
>>>
>>
>>
>>
>> ======================================================================
>> ======================================================Disclaimer:
>> This message and the information contained herein is proprietary and
>> confidential and subject to the Tech Mahindra policy statement, you
>> may review the policy at http://www.techmahindra.com/Disclaimer.html
>> externally http://tim.techmahindra.com/tim/disclaimer.html internally
>> within
>> TechMahindra.=========================================================
>> ===================================================================
>>
>>
>> ======================================================================
>> ======================================================
>> Disclaimer:  This message and the information contained herein is proprietary and
confidential and subject to the Tech Mahindra policy statement, you may review the policy
at http://www.techmahindra.com/Disclaimer.html externally http://tim.techmahindra.com/tim/disclaimer.html
internally within TechMahindra.
>> ======================================================================
>> ======================================================
>>
>>
>
>
>
> ============================================================================================================================
> Disclaimer:  This message and the information contained herein is proprietary and confidential
and subject to the Tech Mahindra policy statement, you may review the policy at http://www.techmahindra.com/Disclaimer.html
externally http://tim.techmahindra.com/tim/disclaimer.html internally within TechMahindra.
> ============================================================================================================================
>
>
>
> ============================================================================================================================
> Disclaimer:  This message and the information contained herein is proprietary and confidential
and subject to the Tech Mahindra policy statement, you may review the policy at http://www.techmahindra.com/Disclaimer.html
externally http://tim.techmahindra.com/tim/disclaimer.html internally within TechMahindra.
> ============================================================================================================================
>



============================================================================================================================
Disclaimer:  This message and the information contained herein is proprietary and confidential
and subject to the Tech Mahindra policy statement, you may review the policy at http://www.techmahindra.com/Disclaimer.html
externally http://tim.techmahindra.com/tim/disclaimer.html internally within TechMahindra.
============================================================================================================================


============================================================================================================================
Disclaimer:  This message and the information contained herein is proprietary and confidential
and subject to the Tech Mahindra policy statement, you may review the policy at http://www.techmahindra.com/Disclaimer.html
externally http://tim.techmahindra.com/tim/disclaimer.html internally within TechMahindra.
============================================================================================================================


Mime
View raw message