[OP-217] Synchronization is blocked when an ICS invitation has no DTSTAMP Created: 08/Jul/15  Updated: 11/May/16  Resolved: 15/Sep/15

Status: Closed
Project: Opush
Component/s: None
Affects Version/s: None
Fix Version/s: 3.1.1

Type: Bug Priority: Normal
Reporter: Thomas HILAIRE Assignee: Thomas HILAIRE
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Rank: 6873

 Description   

Pre-conditions

usera has an email containing an ICS without DTSTAMP in its INBOX (even is it's not legal against the spec)
usera has another regular email

Reproduction steps

  1. As usera synchronize its INBOX

Current behavior

  1. NOK an exception is triggered in logs
  2. NOK no mail appear on its smartphone

Expected behavior

  1. OK no exception appears in logs
  2. OK its emails appear on its smartphone
  3. OK the email with the invitation has a "created date" at 1970-01-01

Additional informations

4:15:19.313 [ERROR] {org.obm.push.handler.SyncHandler} [t40824/cSync/r38036/user@linagora.com] The field dtStamp is required
java.lang.NullPointerException: The field dtStamp is required
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:229) ~[guava-16.0.jar:na]
	at org.obm.push.bean.msmeetingrequest.MSMeetingRequest$Builder.build(MSMeetingRequest.java:185) ~[push-bean-3.1.0-rc3.jar:na]
	at org.obm.push.mail.ICalendarConverter.convertToMSMeetingRequest(ICalendarConverter.java:127) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.MailViewToMSEmailConverterImpl.convertICalendar(MailViewToMSEmailConverterImpl.java:209) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.MailViewToMSEmailConverterImpl.convert(MailViewToMSEmailConverterImpl.java:99) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.MSEmailFetcher.fetch(MSEmailFetcher.java:87) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.EmailChangesFetcherImpl.fetchMSEmails(EmailChangesFetcherImpl.java:150) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.EmailChangesFetcherImpl.emailAdditions(EmailChangesFetcherImpl.java:104) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.EmailChangesFetcherImpl.fetch(EmailChangesFetcherImpl.java:77) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.MailBackendImpl.fetchChanges(MailBackendImpl.java:291) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.MailBackendImpl.continueWindowing(MailBackendImpl.java:283) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.push.mail.MailBackendImpl.getChanged(MailBackendImpl.java:256) ~[push-mail-3.1.0-rc3.jar:na]
	at org.obm.breakdownduration.BreakdownDurationInterceptor.invoke(BreakdownDurationInterceptor.java:58) ~[breakdown-duration-3.1.2.jar:na]
	at org.obm.push.ContentsExporter.getChanged(ContentsExporter.java:82) ~[push-core-3.1.0-rc3.jar:na]
	at org.obm.push.handler.SyncHandler.retreiveServerModifications(SyncHandler.java:288) ~[push-core-3.1.0-rc3.jar:na]
	at org.obm.push.handler.SyncHandler.doUpdates(SyncHandler.java:271) ~[push-core-3.1.0-rc3.jar:na]


 Comments   
Comment by Thomas HILAIRE [ 15/Sep/15 ]

In production at linagora since the 14/09/15.

Impacts: receiving valid or invalid invitation in an email

Comment by Stephane COLSON [ 12/Oct/15 ]

I can have this exception when diplaying the event on iPad:

14:46:16.694 [WARN ] {org.obm.push.bean.Device} [t195/cGetAttachment/r87/usera@obm24.lyn.lng] could not load hints for device type iPad 
14:46:16.697 [WARN ] {org.obm.push.bean.Device} [t195/cGetAttachment/r87/usera@obm24.lyn.lng] could not load hints for device type iPad 
14:46:16.699 [ERROR] {o.o.p.ActiveSyncServlet$$EnhancerByGuice$$f76232f} [t195/cGetAttachment/r87/usera@obm24.lyn.lng] null
java.lang.NullPointerException: null
	at org.obm.push.mail.MailBackendImpl.getAttachment(MailBackendImpl.java:751) ~[push-mail-3.1.1-beta1.jar:na]
	at org.obm.breakdownduration.BreakdownDurationInterceptor.invoke(BreakdownDurationInterceptor.java:58) ~[breakdown-duration-3.1.2.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.getAttachment(GetAttachmentHandler.java:88) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.process(GetAttachmentHandler.java:70) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.processActiveSyncMethod(ActiveSyncServlet.java:258) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.doPost(ActiveSyncServlet.java:174) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.managerTransaction(TransactionalInterceptor.java:87) ~[annotations-3.1.2.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.invoke(TransactionalInterceptor.java:73) ~[annotations-3.1.2.jar:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-api-3.1.0.jar:3.1.0]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) [guice-servlet-3.0.jar:na]
	at org.obm.breakdownduration.BreakdownDurationFilter.doFilter(BreakdownDurationFilter.java:71) [breakdown-duration-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.handleRequest(QoSFilter.java:107) [qos-filter-3.1.2.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.doFilter(QoSFilter.java:88) [qos-filter-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ActiveSyncRequestFilter.doFilter(ActiveSyncRequestFilter.java:78) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.AuthenticationFilter.doFilter(AuthenticationFilter.java:94) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ResourcesFilter.doFilter(ResourcesFilter.java:71) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.PushContinuationFilter.doFilter(PushContinuationFilter.java:73) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.continuation.ContinuationFilter.doFilter(ContinuationFilter.java:127) [jetty-continuation-9.2.8.v20150217.jar:9.2.8.v20150217]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.Server.handle(Server.java:497) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
14:46:16.700 [ERROR] {o.o.a.t.TransactionalInterceptor} [t195/cGetAttachment/r87/usera@obm24.lyn.lng] transaction was rollback
java.lang.NullPointerException: null
	at org.obm.push.mail.MailBackendImpl.getAttachment(MailBackendImpl.java:751) ~[push-mail-3.1.1-beta1.jar:na]
	at org.obm.breakdownduration.BreakdownDurationInterceptor.invoke(BreakdownDurationInterceptor.java:58) ~[breakdown-duration-3.1.2.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.getAttachment(GetAttachmentHandler.java:88) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.process(GetAttachmentHandler.java:70) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.processActiveSyncMethod(ActiveSyncServlet.java:258) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.doPost(ActiveSyncServlet.java:174) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.managerTransaction(TransactionalInterceptor.java:87) ~[annotations-3.1.2.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.invoke(TransactionalInterceptor.java:73) ~[annotations-3.1.2.jar:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-api-3.1.0.jar:3.1.0]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) [guice-servlet-3.0.jar:na]
	at org.obm.breakdownduration.BreakdownDurationFilter.doFilter(BreakdownDurationFilter.java:71) [breakdown-duration-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.handleRequest(QoSFilter.java:107) [qos-filter-3.1.2.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.doFilter(QoSFilter.java:88) [qos-filter-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ActiveSyncRequestFilter.doFilter(ActiveSyncRequestFilter.java:78) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.AuthenticationFilter.doFilter(AuthenticationFilter.java:94) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ResourcesFilter.doFilter(ResourcesFilter.java:71) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.PushContinuationFilter.doFilter(PushContinuationFilter.java:73) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.continuation.ContinuationFilter.doFilter(ContinuationFilter.java:127) [jetty-continuation-9.2.8.v20150217.jar:9.2.8.v20150217]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.Server.handle(Server.java:497) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
14:46:16.794 [WARN ] {org.obm.push.bean.Device} [t139/cGetAttachment/r88/usera@obm24.lyn.lng] could not load hints for device type iPad 
14:46:16.798 [WARN ] {org.obm.push.bean.Device} [t139/cGetAttachment/r88/usera@obm24.lyn.lng] could not load hints for device type iPad 
14:46:16.799 [ERROR] {o.o.p.ActiveSyncServlet$$EnhancerByGuice$$f76232f} [t139/cGetAttachment/r88/usera@obm24.lyn.lng] null
java.lang.NullPointerException: null
	at org.obm.push.mail.MailBackendImpl.getAttachment(MailBackendImpl.java:751) ~[push-mail-3.1.1-beta1.jar:na]
	at org.obm.breakdownduration.BreakdownDurationInterceptor.invoke(BreakdownDurationInterceptor.java:58) ~[breakdown-duration-3.1.2.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.getAttachment(GetAttachmentHandler.java:88) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.process(GetAttachmentHandler.java:70) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.processActiveSyncMethod(ActiveSyncServlet.java:258) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.doPost(ActiveSyncServlet.java:174) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.managerTransaction(TransactionalInterceptor.java:87) ~[annotations-3.1.2.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.invoke(TransactionalInterceptor.java:73) ~[annotations-3.1.2.jar:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-api-3.1.0.jar:3.1.0]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) [guice-servlet-3.0.jar:na]
	at org.obm.breakdownduration.BreakdownDurationFilter.doFilter(BreakdownDurationFilter.java:71) [breakdown-duration-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.handleRequest(QoSFilter.java:107) [qos-filter-3.1.2.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.doFilter(QoSFilter.java:88) [qos-filter-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ActiveSyncRequestFilter.doFilter(ActiveSyncRequestFilter.java:78) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.AuthenticationFilter.doFilter(AuthenticationFilter.java:94) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ResourcesFilter.doFilter(ResourcesFilter.java:71) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.PushContinuationFilter.doFilter(PushContinuationFilter.java:73) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.continuation.ContinuationFilter.doFilter(ContinuationFilter.java:127) [jetty-continuation-9.2.8.v20150217.jar:9.2.8.v20150217]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.Server.handle(Server.java:497) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
14:46:16.800 [ERROR] {o.o.a.t.TransactionalInterceptor} [t139/cGetAttachment/r88/usera@obm24.lyn.lng] transaction was rollback
java.lang.NullPointerException: null
	at org.obm.push.mail.MailBackendImpl.getAttachment(MailBackendImpl.java:751) ~[push-mail-3.1.1-beta1.jar:na]
	at org.obm.breakdownduration.BreakdownDurationInterceptor.invoke(BreakdownDurationInterceptor.java:58) ~[breakdown-duration-3.1.2.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.getAttachment(GetAttachmentHandler.java:88) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.GetAttachmentHandler.process(GetAttachmentHandler.java:70) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.processActiveSyncMethod(ActiveSyncServlet.java:258) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.push.ActiveSyncServlet.doPost(ActiveSyncServlet.java:174) ~[push-core-3.1.1-beta1.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.managerTransaction(TransactionalInterceptor.java:87) ~[annotations-3.1.2.jar:na]
	at org.obm.annotations.transactional.TransactionalInterceptor.invoke(TransactionalInterceptor.java:73) ~[annotations-3.1.2.jar:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-api-3.1.0.jar:3.1.0]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) [guice-servlet-3.0.jar:na]
	at org.obm.breakdownduration.BreakdownDurationFilter.doFilter(BreakdownDurationFilter.java:71) [breakdown-duration-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.handleRequest(QoSFilter.java:107) [qos-filter-3.1.2.jar:na]
	at org.obm.servlet.filter.qos.QoSFilter.doFilter(QoSFilter.java:88) [qos-filter-3.1.2.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ActiveSyncRequestFilter.doFilter(ActiveSyncRequestFilter.java:78) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.AuthenticationFilter.doFilter(AuthenticationFilter.java:94) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.ResourcesFilter.doFilter(ResourcesFilter.java:71) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.obm.push.PushContinuationFilter.doFilter(PushContinuationFilter.java:73) [push-core-3.1.1-beta1.jar:na]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.continuation.ContinuationFilter.doFilter(ContinuationFilter.java:127) [jetty-continuation-9.2.8.v20150217.jar:9.2.8.v20150217]
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) [guice-servlet-3.0.jar:na]
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) [guice-servlet-3.0.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.Server.handle(Server.java:497) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-server-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.8.v20150217.jar:9.2.8.v20150217]
	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]

The date of the event is not epoch but the time of the event.

Comment by Stephane COLSON [ 12/Oct/15 ]

OK for the all thing (exception displayed and created date not displayed on smartphones, but we can see it in the logs)

Comment by Jenkins Continuous Integration Server [ 11/May/16 ]

ABORTED: Integrated in opush-master #262
OP-217 Do not fail when an ICS has no DTSTAMP (thilaire: d6e58e50030f4f1e0f76435faeff86d062861602)

  • push-bean/src/main/java/org/obm/push/bean/msmeetingrequest/MSMeetingRequest.java
  • push-mail/src/test/resources/ics/noDTSTAMP.ics
  • push-mail/src/test/java/org/obm/push/mail/MailViewToMSEmailConverterImplTest.java
  • push-mail/src/test/java/org/obm/push/mail/ICalendarConverterTest.java
  • push-mail/src/test/resources/ics/noVEVENT.ics
Generated at Wed Nov 20 05:53:50 CET 2019 using JIRA 6.1.1#6155-sha1:7188aeec9a6b57d61ea04c52f235f15f55c105e2.