[OP-223] Synchronization is blocked when an ICS invitation is illegally formated Created: 14/Sep/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: 6894

 Description   

Pre-conditions

usera has an email containing a bad ICS
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 an exception appears in logs
  2. OK its emails appear on its smartphone, without any invitation

Additional informations



 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 ]

OK still having this logs

14:33:31.878 [ERROR] {o.o.p.m.EmailViewPartsFetcherImpl} [t104/cSync/r37/usera@obm24.lyn.lng] An invitation in the email 20 cannot be fetched
net.fortuna.ical4j.data.ParserException: Error at line 8:Cannot set timezone for UTC properties
	at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:148) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:210) ~[ical4j-1.0.4.jar:na]
	at org.obm.icalendar.ICalendar.<init>(ICalendar.java:110) ~[icalendar-3.1.2.jar:na]
	at org.obm.icalendar.ICalendar.<init>(ICalendar.java:55) ~[icalendar-3.1.2.jar:na]
	at org.obm.icalendar.ICalendar$Builder.build(ICalendar.java:95) ~[icalendar-3.1.2.jar:na]
	at org.obm.push.mail.EmailViewPartsFetcherImpl.fetchICalendar(EmailViewPartsFetcherImpl.java:293) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.EmailViewPartsFetcherImpl.fetchICalendar(EmailViewPartsFetcherImpl.java:286) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.EmailViewPartsFetcherImpl.fetchInvitation(EmailViewPartsFetcherImpl.java:266) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.EmailViewPartsFetcherImpl.fetch(EmailViewPartsFetcherImpl.java:121) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.MSEmailFetcher.fetch(MSEmailFetcher.java:86) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.MailBackendImpl.fetchItems(MailBackendImpl.java:339) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.MailBackendImpl.fetch(MailBackendImpl.java:855) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.MailBackendImpl$$EnhancerByGuice$$a17fb5a2.CGLIB$fetch$2(<generated>) [guice-3.0.jar:na]
	at org.obm.push.mail.MailBackendImpl$$EnhancerByGuice$$a17fb5a2$$FastClassByGuice$$30ba2c29.invoke(<generated>) [guice-3.0.jar:na]
	at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) [guice-3.0.jar:na]
	at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.jar:na]
	at org.obm.breakdownduration.BreakdownDurationInterceptor.invoke(BreakdownDurationInterceptor.java:58) [breakdown-duration-3.1.2.jar:na]
	at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.jar:na]
	at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52) [guice-3.0.jar:na]
	at org.obm.push.mail.MailBackendImpl$$EnhancerByGuice$$a17fb5a2.fetch(<generated>) [guice-3.0.jar:na]
	at org.obm.push.mail.MailBackendImpl.fetch(MailBackendImpl.java:885) [push-mail-3.1.1-beta1.jar:na]
	at org.obm.push.mail.MailBackendImpl$$EnhancerByGuice$$a17fb5a2.CGLIB$fetch$1(<generated>) [guice-3.0.jar:na]
	at org.obm.push.mail.MailBackendImpl$$EnhancerByGuice$$a17fb5a2$$FastClassByGuice$$30ba2c29.invoke(<generated>) [guice-3.0.jar:na]
	at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) [guice-3.0.jar:na]
	at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.jar:na]
	at org.obm.breakdownduration.BreakdownDurationInterceptor.invoke(BreakdownDurationInterceptor.java:58) [breakdown-duration-3.1.2.jar:na]
	at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.jar:na]
	at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52) [guice-3.0.jar:na]
	at org.obm.push.mail.MailBackendImpl$$EnhancerByGuice$$a17fb5a2.fetch(<generated>) [guice-3.0.jar:na]
	at org.obm.push.ContentsExporter.fetch(ContentsExporter.java:107) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.SyncHandler.fetchServerItem(SyncHandler.java:405) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.SyncHandler.processClientModifications(SyncHandler.java:330) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.SyncHandler.doUpdates(SyncHandler.java:270) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.SyncHandler.handleDataSync(SyncHandler.java:515) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.SyncHandler.computeSyncState(SyncHandler.java:491) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.SyncHandler.doTheJob(SyncHandler.java:464) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.SyncHandler.process(SyncHandler.java:176) [push-core-3.1.1-beta1.jar:na]
	at org.obm.push.handler.WbxmlRequestHandler.process(WbxmlRequestHandler.java:100) [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.push.ActiveSyncServlet$$EnhancerByGuice$$f76232f.CGLIB$doPost$2(<generated>) [guice-3.0.jar:na]
	at org.obm.push.ActiveSyncServlet$$EnhancerByGuice$$f76232f$$FastClassByGuice$$b03ef706.invoke(<generated>) [guice-3.0.jar:na]
	at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) [guice-3.0.jar:na]
	at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.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 com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.jar:na]
	at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52) [guice-3.0.jar:na]
	at org.obm.push.ActiveSyncServlet$$EnhancerByGuice$$f76232f.doPost(<generated>) [guice-3.0.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]
Caused by: java.lang.UnsupportedOperationException: Cannot set timezone for UTC properties
	at net.fortuna.ical4j.model.property.UtcProperty.setTimeZone(UtcProperty.java:98) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarBuilder.updateTimeZone(CalendarBuilder.java:372) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarBuilder.access$3(CalendarBuilder.java:370) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarBuilder$ContentHandlerImpl.parameter(CalendarBuilder.java:296) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$ParameterParser.parse(CalendarParserImpl.java:342) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$ParameterParser.access$1(CalendarParserImpl.java:297) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$ParameterListParser.parse(CalendarParserImpl.java:283) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$PropertyParser.parse(CalendarParserImpl.java:213) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$PropertyParser.access$1(CalendarParserImpl.java:200) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$PropertyListParser.parse(CalendarParserImpl.java:178) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.parse(CalendarParserImpl.java:396) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.access$1(CalendarParserImpl.java:382) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl$PropertyListParser.parse(CalendarParserImpl.java:175) ~[ical4j-1.0.4.jar:na]
	at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:125) ~[ical4j-1.0.4.jar:na]
	... 95 common frames omitted
14:33:33.327 [WARN ] {org.obm.push.bean.Device} [t42/cPing/r38/usera@obm24.lyn.lng] could not load hints for device type iPad
Comment by Jenkins Continuous Integration Server [ 11/May/16 ]

ABORTED: Integrated in opush-master #262
OP-223 Do not fail when an ICS can't be parsed (thilaire: 03cf17e74cd3e3d9efe947a4e779e0dbff2a13c4)

  • push-mail/src/main/java/org/obm/push/mail/MailViewToMSEmailConverterImpl.java
  • push-mail/src/test/java/org/obm/push/mail/EmailViewPartsFetcherImplTest.java
  • push-mail/src/test/java/org/obm/push/mail/MailViewToMSEmailConverterImplTest.java
  • push-mail/src/main/java/org/obm/push/mail/EmailViewPartsFetcherImpl.java
Generated at Fri Aug 23 13:01:21 CEST 2019 using JIRA 6.1.1#6155-sha1:7188aeec9a6b57d61ea04c52f235f15f55c105e2.