The problem here seems that

entry = myService.update(new URL(entry.getEditLink().getHref()), entry);

simply does not do anything for some records. Is there any way to force the
update?

before update: 2011-09-07T00:34:47.503Z, value: 1315355687503, etag:
"Rns7ezVSLyt7I2A9WhdWE0gPQQw."
after update: 2011-09-07T00:34:47.503Z, value: 1315355687503, etag:
"Rns7ezVSLyt7I2A9WhdWE0gPQQw."

On 8/9/11 9:22 AM, "Alain Vongsouvanh" <[email protected]> wrote:

> Hello Alexey,
> 
> Please see my comment inline:
> 
> On Mon, Aug 8, 2011 at 7:38 PM, Alexey Panteleev <[email protected]> wrote:
>> Our app reads from the feed upon user¹s request and as a test executes this:
>> 
>> entry = myService.update(new URL(entry.getEditLink().getHref()), entry);
>> 
>> It seems this update command does not always update the record and so I
>> compute the time diff based on some old update time.
>> 
>> 2011/08/08 19:34:42:814 PDT [WARN] ImapConnection - GMail ~ updated1:
>> 2011-08-09T02:29:27.253Z, value: 1312856967253, etag:
>> "Rnw-ezVSLit7I2A9WhdRGEgMTgI."
>> 2011/08/08 19:34:43:117 PDT [WARN] ImapConnection - GMail ~ updated2:
>> 2011-08-09T02:32:51.932Z, value: 1312857171932, etag:
>> "QHc4ejVSLit7I2A9WhdRGEgNRgM."
>>     Time diff (min): 1
>> 2011/08/08 19:35:01:282 PDT [WARN] ImapConnection - GMail ~ updated1:
>> 2011-08-09T02:29:25.787Z, value: 1312856965787, etag:
>> "RHkzfzVSLit7I2A9WhdRGEgMTgI."
>> 2011/08/08 19:35:01:553 PDT [WARN] ImapConnection - GMail ~ updated2:
>> 2011-08-09T02:33:10.382Z, value: 1312857190382, etag:
>> "QX0zejVSLit7I2A9WhdRGEgNRg0."
>>     Time diff (min): 1
>> 2011/08/08 19:35:11:198 PDT [WARN] ImapConnection - GMail ~ updated1:
>> 2011-08-09T02:29:25.787Z, value: 1312856965787, etag:
>> "RHkzfzVSLit7I2A9WhdRGEgMTgI."
>> 2011/08/08 19:35:11:499 PDT [WARN] ImapConnection - GMail ~ updated2:
>> 2011-08-09T02:29:25.787Z, value: 1312856965787, etag:
>> "RHkzfzVSLit7I2A9WhdRGEgMTgI."
>>     Time diff (min): 5
>> 
> 
> The last 6 lines seem to indicate that you tried to update the same entry (in
> bold) twice (with etag "RHkzfzVSLit7I2A9WhdRGEgMTgI"), the second update
> should have failed and the API should have thrown a 412 Precondition Failed
> error since the etag was outdated.
> This can happen if a user tries to update a contact twice in a row and your
> app didn't have the time to save the contact returned by the API in your local
> storage.
> 
> To avoid this kind of race condition, your application should always try to
> retrieve the contact from the API before every update.
> 
> Best,
> Alain
>  
>> 
>> On 8/8/11 11:31 AM, "Alain Vongsouvanh" <[email protected]
>> <http://[email protected]> > wrote:
>> 
>>> Hello Alexey,
>>> 
>>> Are you using batch requests to update your contact? Can you make sure that
>>> the contact has indeed been updated?
>>> It might be hard to test but one thing you could try is printing the value
>>> of updated before and after the update to make sure that it changes.
>>> Another thing is to make sure that the contact's etag changed as well.
>>> 
>>> Best,
>>> Alain
>>> 
>>> On Sun, Aug 7, 2011 at 1:26 PM, Alexey Panteleev <[email protected]
>>> <http://[email protected]> > wrote:
>>>> Hi Alain,
>>>> 
>>>>  I read recently updated contacts from the feed and execute the update for
>>>> each to measure the timestamp difference.
>>>> What I see is that for some contacts the difference is abnormal (I printed
>>>> out the entry.getUpdated() this time also):
>>>> 
>>>> 2011/08/07 13:20:30:956 PDT [WARN] GMail ~ Time diff (min): 1, str:
>>>> 2011-08-07T20:18:15.362Z
>>>> 2011/08/07 13:20:39:099 PDT [WARN] GMail ~ Time diff (min): 1, str:
>>>> 2011-08-07T20:18:43.648Z
>>>> 2011/08/07 13:20:49:630 PDT [WARN] GMail ~ Time diff (min): 62, str:
>>>> 2011-08-07T19:17:54.834Z <---- 62min?
>>>> ...
>>>> 
>>>> 
>>>>  I am using the following versions in my maven setup:
>>>> 
>>>> <properties>
>>>>         <gdataVersion>1.41.5</gdataVersion>
>>>>     </properties>
>>>> 
>>>> <dependency>
>>>>                 <groupId>com.google.gdata</groupId>
>>>>                 <artifactId>gdata-contacts-3.0</artifactId>
>>>>                 <version>${gdataVersion}</version>
>>>>             </dependency>
>>>>             ...
>>>>             <dependency>
>>>>                 <groupId>com.google.gdata</groupId>
>>>>                 <artifactId>gdata-client-1.0</artifactId>
>>>>                 <version>${gdataVersion}</version>
>>>>             </dependency>
>>>>             <dependency>
>>>>                 <groupId>com.google.gdata</groupId>
>>>>                 <artifactId>gdata-core-1.0</artifactId>
>>>>                 <version>${gdataVersion}</version>
>>>>             </dependency>
>>>>             <dependency>
>>>>                 <groupId>com.google.collections</groupId>
>>>>                 <artifactId>google-collections</artifactId>
>>>>                 <version>1.0</version>
>>>>             </dependency>
>>>> 
>>>> 
>>>> On 8/5/11 9:47 AM, "Alain Vongsouvanh" <[email protected]
>>>> <http://[email protected]>  <http://[email protected]> > wrote:
>>>> 
>>>>> Hello Alexey,
>>>>> 
>>>>> Sorry about the delay in getting back to you! I just tried updating and
>>>>> checking the difference between my computer timestamp and the updated
>>>>> value timestamp and the difference was within 1 or 2 seconds, not hours.
>>>>> 
>>>>> Can you try printing the value of "entry.getUpdated()
>>>>> " to check if the string representation makes sense. Also, what version of
>>>>> the client library are you using?
>>>>> 
>>>>> Best,
>>>>> Alain
>>>>> 
>>>>> 
>>>>> On Tue, Aug 2, 2011 at 1:02 PM, Alexey Panteleev <[email protected]
>>>>> <http://[email protected]>  <http://[email protected]> > wrote:
>>>>>> 
>>>>>> Hello,
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>  I've been running some experiments monitoring the Updated timestamp on
>>>>>> contact records:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> long t1 = System.currentTimeMillis();
>>>>>> 
>>>>>> entry = myService.update(new URL(entry.getEditLink().getHref()), entry);
>>>>>> 
>>>>>> long updateTimeDiff = t1 - entry.getUpdated().getValue();
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>  What I see is that the time difference between the update time and my
>>>>>> local time varies drastically from one call to another,
>>>>>> 
>>>>>> one time I see 1min difference another time it is 50min difference, which
>>>>>> really means that the google servers record very different utc timestamps
>>>>>> for events that actually happen next to each other.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>  Can you please explain this and also tell me how I could rely on these
>>>>>> timestamps during synch

-- 
You received this message because you are subscribed to the Google
Groups "Google Contacts, Shared Contacts and User Profiles APIs" group.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://code.google.com/apis/contacts/community/forum.html

Reply via email to