Hello Alexey,

Our servers use NTP <http://www.ntp.org/> to sync their date and time.
However, not sure which source they are using, but any should work.
About contact not being updated, I don't think this should be an issue if no
data has been updated in our servers.

Best,
Alain

On Thu, Sep 8, 2011 at 9:14 PM, Alexey Panteleev <[email protected]> wrote:

>  We're doing synchronization between more than one system (not just
> google) and so the same contact may have been updated at timeA (as
> reported by systemA), at timeB (as reported by systemB), ... I don't
> want to compare timeA to timeB directly when deciding which update has
> happened later so I am trying to figure out the approximate server
> time difference to use as an error threshold. Under the threshold I
> can't really say which server updated later, but over the threshold I
> can. So I want to be able to tell the current time differences between
> our server and serverA, our server and serverB, our server and serverC
> and so on ...
>
>  When saving the update time reported by serverA,B,C,... in our local
> db I'd like to adjust the reported time by the servers time difference
> to always save it in accordance to our server's time.
>
>  Let me know if this makes sense to you.
>
> On Thu, Sep 8, 2011 at 9:50 AM, Alain Vongsouvanh <[email protected]>
> wrote:
> > Hello Alexey,
> > I am sorry but I assumed you were updating the same contact twice as it
> > shows up in the log you provided:
> > 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
> > Can you explain why you would need the time difference between Google's
> > servers and your environment? If this is for subsequent GET requests
> using
> > the "updated-min" query parameter, I would advise you to use the latest
> > <updated> element in the result feed instead of storing the time in your
> > environment.
> > Doing that will ensure that you are using Google's data and not your
> > environment's which can be out of sync and will also prevent race
> condition
> > (somebody updated a contact between your query and the line that stores
> the
> > current time).
> > Best,
> > Alain
> >
> > On Wed, Sep 7, 2011 at 11:10 AM, Alexey Panteleev <[email protected]>
> wrote:
> >>
> >> No, I am not updating it twice, only once. I print the etag before the
> >> update and after (so you see those two lines).
> >> But what I see is that for other contacts the update is happening even
> >> though I am updating a record that has not changed.
> >>
> >> What I am trying to do is to figure out the approximate time difference
> >> between our and google servers.
> >> Is there a better way to find out the current server time?
> >>
> >>
> >> On 9/7/11 8:38 AM, "Alain Vongsouvanh" <[email protected]> wrote:
> >>
> >> Hello Alexey,
> >>
> >> Unfortunately, the Contacts API won't generate a new Etag or new updated
> >> date if nothing has been updated. However, I am still wondering why your
> >> application isn't getting any 412 exceptions as you are trying to modify
> the
> >> same contact twice with the same etag:
> >>   1. First update works as you get a new Etag and new updated date.
> >>   2. Second update should fail with a 412 Precondition Failed exception
> >> since you are trying to update a contact with an old Etag.
> >>
> >> Best,
> >> Alain
> >>
> >> On Tue, Sep 6, 2011 at 5:58 PM, Alexey Panteleev <[email protected]>
> wrote:
> >>
> >> 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]
> >> <http://[email protected]> > wrote:
> >>
> >> Hello Alexey,
> >>
> >> Please see my comment inline:
> >>
> >> On Mon, Aug 8, 2011 at 7:38 PM, Alexey Panteleev <[email protected]
> >> <http://[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]>  <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]>  <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]>
> >>  <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]>
> >>  <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
> >
> >
> >
> > --
> > Alain Vongsouvanh
> >
> >
> > --
> > 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
> >
>
>
>
> --
> Founder / Project Lead
> Yoxel Systems
>
> Skype ID: yoxel.com
> Twitter: @yoxeldotcom
> Telephone: +1 415 230 0189
>
> --
> 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
>



-- 
Alain Vongsouvanh | Developer Programs Engineer

-- 
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