Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Normal
-
Resolution: Fixed
-
Affects Version/s: 3.0.2
-
Fix Version/s: 3.0.4
-
Labels:None
-
Rank:6520
Description
Sometimes, incoming Sync requests come with some bad ServerId like :
- 0
- an arbitrary string
- a ServerId that doesn't belong to the Sync CollectionId
We should ignore entries if needed or return an appropriate answer.
Issue Links
- is cloned by
-
OP-138 CLONE 3.1 - T#10917 handle invalid ServerId in incoming requests
-
Activity
Reopened no one command run successfully with an ipad :
3:20:30.510 [ERROR] {o.o.p.h.SyncHandler$$EnhancerByGuice$$1fddff6b} [t337/cSync/r93/admin@c.lyon.lan] The type of the collection found:{EMAIL} is not the same than received in DataClass:{null} org.obm.push.exception.activesync.ServerErrorException: The type of the collection found:{EMAIL} is not the same than received in DataClass:{null} at org.obm.push.protocol.data.SyncAnalyser.checkCollectionType(SyncAnalyser.java:180) ~[push-core-3.0.4-SNAPSHOT.jar:na] at org.obm.push.protocol.data.SyncAnalyser.getCollection(SyncAnalyser.java:117) ~[push-core-3.0.4-SNAPSHOT.jar:na] at org.obm.push.protocol.data.SyncAnalyser.analyseSync(SyncAnalyser.java:94) ~[push-core-3.0.4-SNAPSHOT.jar:na] at org.obm.push.handler.SyncHandler.analyzeRequest(SyncHandler.java:220) ~[push-core-3.0.4-SNAPSHOT.jar:na] at org.obm.push.handler.SyncHandler.process(SyncHandler.java:163) ~[push-core-3.0.4-SNAPSHOT.jar:na]
SUCCESS: Integrated in opush-master-3.0 #16
OP-123 refactor Sync client API to use a builder pattern (matthieu.baechler: c8a2fcf9bddf4bf67e0045ca8b3d1897efa00ad2)
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- integration-testing/opush/src/test/java/org/obm/opush/MailBackendGetChangedTest.java
- client/src/main/java/org/obm/sync/push/client/commands/SyncWithCommand.java
- client/src/main/java/org/obm/sync/push/client/OPClient.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
- client/src/main/java/org/obm/sync/push/client/commands/SyncWithDataCommand.java
OP-123remove code duplication (matthieu.baechler: da86558c6511e9bbef57a7b5f0ee8f16b992dd15) - client/src/main/java/org/obm/sync/push/client/commands/Sync.java
OP-123merge SyncWithCommand into Sync object (matthieu.baechler: d6fbcc0a7658dbaaa258ba9633e9884dcb35cd5d) - integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- client/src/main/java/org/obm/sync/push/client/commands/SyncWithCommand.java
- integration-testing/opush/src/test/java/org/obm/opush/MailBackendGetChangedTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
OP-123convert another OPClient.sync invocation into a Sync.Builder one (matthieu.baechler: 636bb930cb4ba26d003a70e778af5ff1ba03d128) - integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- client/src/main/java/org/obm/sync/push/client/OPClient.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
OP-123remove use of xml template to have a more flexible Sync command (matthieu.baechler: 2d0d0bdcf6218854a4307b262be8c5076f59f668) - client/src/main/resources/data/SyncRequest.xml
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
OP-123make use of opush protocol object SyncCollection (matthieu.baechler: d8dbf83d44d292d7f574c27bf6a23af2397640e7) - client/src/main/java/org/obm/sync/push/client/commands/Sync.java
OP-123make use of opush protocol object SyncCollection (step two) (matthieu.baechler: cf9b35e211de625675cd51abdf89b94e8bd2dd26) - integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- integration-testing/opush/src/test/java/org/obm/opush/MailBackendGetChangedTest.java
OP-123remove SyncCollectionCommandDto (matthieu.baechler: 0e3f4e5bfd2fd729518f45871c772e79652df6fb) - protocol/src/main/java/org/obm/push/protocol/data/ContactEncoder.java
- protocol/src/test/java/org/obm/push/protocol/bean/SyncCollectionTest.java
- client/src/main/resources/data/EmailSyncRequest.xml
- protocol/src/test/java/org/obm/push/BeansTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- push-core/src/main/java/org/obm/push/protocol/data/SyncAnalyser.java
- protocol/src/test/java/org/obm/push/protocol/data/SyncDecoderTest.java
- protocol/src/main/java/org/obm/push/protocol/data/SyncEncoder.java
- protocol/src/test/java/org/obm/push/protocol/SyncProtocolTest.java
- push-core/src/test/java/org/obm/push/protocol/data/SyncAnalyserTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- client/src/main/resources/data/EmailSyncRequestWithWait.xml
- integration-testing/opush/src/test/java/org/obm/opush/MailBackendGetChangedTest.java
- protocol/src/main/java/org/obm/push/protocol/SyncProtocol.java
- client/src/main/java/org/obm/sync/push/client/commands/EmailSyncCommand.java
- protocol/src/main/java/org/obm/push/protocol/data/SyncDecoder.java
- protocol/src/main/java/org/obm/push/protocol/bean/SyncCollectionCommandDto.java
- protocol/src/main/java/org/obm/push/protocol/data/ContactDecoder.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
- client/src/main/resources/data/SyncWithCommandRequest.xml
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommands.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- client/src/main/resources/data/EmailDeleteSyncRequest.xml
- client/src/main/java/org/obm/sync/push/client/commands/EmailSyncNoOptionsCommand.java
- client/src/main/java/org/obm/sync/push/client/commands/EmailDeleteSyncRequest.java
- protocol/src/main/java/org/obm/push/protocol/bean/SyncCollection.java
OP-123finally make Sync multi command and drop template based sync (matthieu.baechler: 410cc6cfe078f5d4ccc2005784728877391dbea4) - client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- protocol/src/test/java/org/obm/push/protocol/bean/SyncCollectionTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- protocol/src/main/java/org/obm/push/protocol/bean/SyncCollection.java
- integration-testing/opush/src/test/java/org/obm/opush/MailBackendGetChangedTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
- protocol/src/test/java/org/obm/push/protocol/SyncProtocolTest.java
OP-123make various integrity checks on commands ServerId (matthieu.baechler: df3ff9b741ff7aa42c8ff503accd68db79fdaec2) - push-bean/src/main/java/org/obm/push/bean/ServerId.java
- push-core/src/main/java/org/obm/push/protocol/data/SyncAnalyser.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
OP-123make empty string check on commands ServerId (matthieu.baechler: e8e0b45dd8eb301ec582930d750125a95a521675) - push-core/src/main/java/org/obm/push/protocol/data/SyncAnalyser.java
- push-bean/src/main/java/org/obm/push/bean/change/SyncCommand.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
OP-123remove inheritance with SyncCollectionCommands, use delegation (matthieu.baechler: c9ca7f5d7d76ec52559ff3c8e4f9f57273b593e3) - push-dao-cassandra/src/main/java/org/obm/push/json/JSONService.java
- push-bean/src/test/java/org/obm/push/bean/SyncCollectionCommandsIndexTest.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsIndex.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommands.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandsResponseMixIn.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsResponse.java
- push-bean/src/test/java/org/obm/push/bean/SyncCollectionCommandsTest.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionResponsesResponse.java
- push-bean/src/test/java/org/obm/push/bean/BeansTest.java
OP-123remove AbstractSyncCollection (matthieu.baechler: 61aa17d1da2064f5f3cde20a86a5edb69bee0388) - push-bean/src/main/java/org/obm/push/bean/AnalysedSyncCollection.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/AbstractSyncCollectionMixIn.java
- push-core/src/main/java/org/obm/push/SummaryLoggerService.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsResponse.java
- protocol/src/main/java/org/obm/push/protocol/SyncProtocol.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionResponse.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandsResponseMixIn.java
- push-core/src/test/java/org/obm/push/protocol/data/SyncAnalyserTest.java
- push-bean/src/test/java/org/obm/push/bean/AbstractSyncCollectionTest.java
- protocol/src/main/java/org/obm/push/protocol/bean/SyncCollection.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/AnalysedSyncCollectionMixIn.java
- push-dao-cassandra/src/main/java/org/obm/push/json/JSONService.java
- protocol/src/main/java/org/obm/push/protocol/PingProtocol.java
- protocol/src/main/java/org/obm/push/protocol/data/SyncEncoder.java
- protocol/src/test/java/org/obm/push/protocol/bean/SyncCollectionTest.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsIndex.java
- protocol/src/test/java/org/obm/push/protocol/GetItemEstimateProtocolTest.java
- push-bean/src/main/java/org/obm/push/bean/PIMDataType.java
- push-core/src/main/java/org/obm/push/handler/PingHandler.java
- push-bean/src/main/java/org/obm/push/bean/AbstractSyncCollection.java
- protocol/src/main/java/org/obm/push/protocol/GetItemEstimateProtocol.java
- protocol/src/test/java/org/obm/push/protocol/data/SyncDecoderTest.java
OP-123AnalysedSyncCollection contains a SyncCollectionCommandsRequest instead of a ...Response (matthieu.baechler: e709cda2843032b6f5aca3552f5f5c0d00f1c477) - push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandsRequestMixIn.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsResponse.java
- push-core/src/main/java/org/obm/push/protocol/data/SyncAnalyser.java
- push-core/src/test/java/org/obm/push/protocol/data/SyncAnalyserTest.java
- push-core/src/test/java/org/obm/push/handler/SyncHandlerTest.java
- push-bean/src/main/java/org/obm/push/bean/AnalysedSyncCollection.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsRequest.java
- push-dao-cassandra/src/main/java/org/obm/push/json/JSONService.java
- push-core/src/test/java/org/obm/push/SummaryLoggerServiceTest.java
- push-bean/src/test/java/org/obm/push/bean/AnalysedSyncCollectionTest.java
- push-dao-cassandra/src/test/java/org/obm/push/json/JSONServiceTest.java
- push-core/src/main/java/org/obm/push/handler/SyncHandler.java
OP-123duplicate SyncCollectionCommand into SyncCollectionCommandRequest and SyncCollectionCommandResponse (matthieu.baechler: 04ea90eace70a120876f33a69531a90b69ad572e) - push-core/src/test/java/org/obm/push/handler/SyncHandlerTest.java
- protocol/src/test/java/org/obm/push/protocol/data/SyncDecoderTest.java
- protocol/src/test/java/org/obm/push/protocol/SyncProtocolTest.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandRequest.java
- protocol/src/main/java/org/obm/push/protocol/bean/SyncCollection.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- push-dao-cassandra/src/main/java/org/obm/push/json/JSONService.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
- push-bean/src/test/java/org/obm/push/bean/SyncCollectionCommandsIndexTest.java
- push-bean/src/test/java/org/obm/push/bean/BeansTest.java
- push-bean/src/test/java/org/obm/push/bean/AnalysedSyncCollectionTest.java
- push-core/src/main/java/org/obm/push/handler/ItemOperationsHandler.java
- integration-testing/opush/src/test/java/org/obm/opush/MailBackendGetChangedTest.java
- push-core/src/test/java/org/obm/push/SummaryLoggerServiceTest.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsResponse.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/TypedCommandsMixIn.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsRequest.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsIndex.java
- push-bean/src/test/java/org/obm/push/bean/TypedCommandsIndexTest.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandResponse.java
- push-core/src/main/java/org/obm/push/handler/SyncHandler.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
- push-core/src/main/java/org/obm/push/protocol/data/SyncAnalyser.java
- push-core/src/main/java/org/obm/push/state/StateMachine.java
- protocol/src/main/java/org/obm/push/protocol/SyncProtocol.java
- push-bean/src/main/java/org/obm/push/bean/TypedCommandsIndex.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionResponsesResponse.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommand.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionResponse.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandResponseMixIn.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandsResponseMixIn.java
- push-dao-cassandra/src/test/java/org/obm/push/json/JSONServiceTest.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandsRequestMixIn.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandMixIn.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- protocol/src/main/java/org/obm/push/protocol/data/SyncDecoder.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandRequestMixIn.java
- protocol/src/test/java/org/obm/push/protocol/bean/SyncCollectionTest.java
- push-dao-cassandra/src/test/java/org/obm/push/json/JSONServiceCompatibilityTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandsMixIn.java
- push-bean/src/main/java/org/obm/push/bean/AnalysedSyncCollection.java
- push-bean/src/main/java/org/obm/push/bean/TypedCommand.java
- push-core/src/test/java/org/obm/push/state/StateMachineTest.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommands.java
- protocol/src/main/java/org/obm/push/protocol/data/SyncEncoder.java
OP-123remove SyncCollectionCommandsRequest object (matthieu.baechler: 00bd171ac820fbc3055f78327baf499192a88ae0) - push-core/src/test/java/org/obm/push/SummaryLoggerServiceTest.java
- push-bean/src/test/java/org/obm/push/bean/AnalysedSyncCollectionTest.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/SyncCollectionCommandsRequestMixIn.java
- push-core/src/test/java/org/obm/push/handler/SyncHandlerTest.java
- push-core/src/main/java/org/obm/push/protocol/data/SyncAnalyser.java
- push-core/src/main/java/org/obm/push/SummaryLoggerService.java
- push-bean/src/main/java/org/obm/push/bean/TypedCommandsIndex.java
- push-dao-cassandra/src/test/java/org/obm/push/json/JSONServiceTest.java
- push-bean/src/test/java/org/obm/push/bean/BeansTest.java
- push-core/src/test/java/org/obm/push/protocol/data/SyncAnalyserTest.java
- push-bean/src/main/java/org/obm/push/bean/AnalysedSyncCollection.java
- push-core/src/main/java/org/obm/push/handler/SyncHandler.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandsRequest.java
- push-dao-cassandra/src/main/java/org/obm/push/json/JSONService.java
OP-123add EncodedApplicationData to postpone data decoding after collection type resolution (matthieu.baechler: 065c547141645d947c1c6ee3e562922ca1ce9486) - push-core/src/main/java/org/obm/push/protocol/data/SyncAnalyser.java
- protocol/src/main/java/org/obm/push/protocol/SyncProtocol.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerTest.java
- protocol/src/main/java/org/obm/push/protocol/data/SyncEncoder.java
- push-bean/src/main/java/org/obm/push/bean/EncodedApplicationData.java
- protocol/src/test/java/org/obm/push/protocol/SyncProtocolTest.java
- protocol/src/main/java/org/obm/push/protocol/bean/SyncRequest.java
- protocol/src/main/java/org/obm/push/protocol/AsymetricActiveSyncProtocol.java
- push-bean/src/main/java/org/obm/push/bean/EncodedSyncCollectionCommandRequest.java
- protocol/src/test/java/org/obm/push/protocol/data/SyncDecoderTest.java
- protocol/src/test/java/org/obm/push/protocol/bean/SyncCollectionTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnContactsTest.java
- protocol/src/main/java/org/obm/push/protocol/data/SyncDecoder.java
- client/src/main/java/org/obm/sync/push/client/commands/Sync.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerWithBackendTest.java
- protocol/src/main/java/org/obm/push/protocol/data/ContactEncoder.java
- push-dao-cassandra/src/main/java/org/obm/push/json/mixin/AnalysedSyncCollectionMixIn.java
- integration-testing/opush/src/test/java/org/obm/opush/MailBackendGetChangedTest.java
- protocol/src/main/java/org/obm/push/protocol/bean/ClientSyncRequest.java
- protocol/src/main/java/org/obm/push/protocol/bean/SyncCollection.java
- push-dao-cassandra/src/test/java/org/obm/push/json/JSONServiceTest.java
- integration-testing/opush/src/test/java/org/obm/opush/command/sync/SyncHandlerOnCalendarsTest.java
- protocol/src/main/java/org/obm/push/protocol/ActiveSyncProtocol.java
- push-bean/src/main/java/org/obm/push/bean/SyncCollectionCommandRequest.java
Tests done with Ipad (iOS 8.1.2), iphone (iOS 7.1.2); Fairphone FP1 (Android 4.2.2) and Windows Phone Nokia Lumia 920. New contact created, modified then deleted. New event created, modified the deleted. Email received.
OK with Opush 3.0.4 with OBM 3.0.0 on CentOS
More tests will be done with OP-146, but this version is also used for a while by beta testers on Lng prod.
Reproduction steps: One way to produce this issue, with a Nexus 4 (Android 5.0.1) :
# usera with its Nexus4, is configured to synchronize each 10 minutes
- usera with its Nexus4, receive en email in its INBOX
- usera with its Nexus4, read this email and return to the INBOX view
- usera with its Nexus4, he select the read email and drop it with the "bin" button
- usera with its Nexus4, force the synchronization
Bad behavior:
the device does not want to synchronize its INBOX anymore
Expected behavior:
the device is able to synchronize its INBOX anymore
It changes details of Sync command handling.
It means that it can break Sync on some devices : we must test synchronization with various phones with addition/modification/deletion.