Have you tried something like UNIXSECONDS FOR SECS OF VAL 3 + 1? There might be an issue of it using something like “<” rather than “<=”.
|
David Zimmermann
Scientist, Controls Software
AOT-IC Accelerator Operations and Technology, Instrumentation and Controls
Office: 505.664.0824
Mobile: 503.547.5966
Los Alamos National Laboratory
lanl.gov
|
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of "De La Paz, Elena via Tech-talk" <tech-talk at aps.anl.gov>
Reply-To: "De La Paz, Elena" <delapaz3 at llnl.gov>
Date: Monday, August 9, 2021 at 3:35 PM
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Subject: [EXTERNAL] Archiver getDataAtTime and getData endpoints have a timestamp discrepancy
Hi all,
I have a question about using the different endpoints and the timestamp resolution of the archiver. Here is the situation that is confusing me:
- I make a request to the getData endpoint for some <PV> that returns multiple values, each accompanied by a secs and nanos field indicating when the value was updated
Example response for pv ID: [{ val: “2”, secs: “1627576833”, nanos: “342322864”}, {val: “3”, secs: “1627576922”, nanos: “563728637”} ]
- When I make a request to getDataAtTime where the at parameter contains the full returned timestamp, down to the nanoseconds, I get the record value before:
Example request: <ARCHIVER DATA ENDPOINT>/getDataAtTime?at=<UNIXSECONDS FOR SECS OF VAL 3>.563728637 -d [“ID”]
Example response: { “ID”: “2”}
This occurs over shot intervals, so time zone issues are not the underlying cause. Is there some difference in the time resolution of the different endpoints? Is this a quirk of the archiver? We are doing a work around by rounding up to
milliseconds, but it is confusing that the timestamp returned in nanoseconds can’t be used precisely in getdataattime
Thank you,
Elena De La Paz