trafficserver-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Igor Galić <i.ga...@brainsware.org>
Subject Re: git commit: TS-1645: increase the file stat resolution on config files
Date Tue, 26 Feb 2013 05:45:34 GMT


----- Original Message -----
> Updated Branches:
>   refs/heads/master 476c1fa97 -> 5d7fb725d
> 
> 
> TS-1645: increase the file stat resolution on config files
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/trafficserver/commit/5d7fb725
> Tree:
> http://git-wip-us.apache.org/repos/asf/trafficserver/tree/5d7fb725
> Diff:
> http://git-wip-us.apache.org/repos/asf/trafficserver/diff/5d7fb725
> 
> Branch: refs/heads/master
> Commit: 5d7fb725d4bc0e3f66d476198a69b2ded0a5c15e
> Parents: 476c1fa
> Author: Yakov Kopel <ykopel@websense.com>
> Authored: Mon Feb 25 17:09:08 2013 -0800
> Committer: James Peach <jpeach@apache.org>
> Committed: Mon Feb 25 17:10:26 2013 -0800
> 
> ----------------------------------------------------------------------
>  CHANGES          |    4 ++++
>  configure.ac     |    5 +++++
>  mgmt/Rollback.cc |   12 ++++++------
>  mgmt/Rollback.h  |    8 ++++++++
>  4 files changed, 23 insertions(+), 6 deletions(-)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5d7fb725/CHANGES
> ----------------------------------------------------------------------
> diff --git a/CHANGES b/CHANGES
> index f31f335..c4b4cc4 100644
> --- a/CHANGES
> +++ b/CHANGES
> @@ -1,6 +1,10 @@
>                                                           -*- coding:
>                                                           utf-8 -*-
>  Changes with Apache Traffic Server 3.3.1
>  
> +
> +  *) [TS-1645] increase the file stat resolution on config files
> +   Author: Yakov Kopel <ykopel@websense.com>
> +
>    *) [TS-1557] update ua_begin_write
>     Author: Aidan McGurn <aidan.mcgurn@openwave.com>
>  
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5d7fb725/configure.ac
> ----------------------------------------------------------------------
> diff --git a/configure.ac b/configure.ac
> index 69f2bed..09ca9e7 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1387,6 +1387,11 @@ if test "x${enable_hwloc}" = "xyes"; then
>    )
>  fi
>  
> +# Check for high-resolution timestamps in struct stat
> +AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec])
> +AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
> +
> +
>  #
>  # Configure sockopt value for TPROXY. Look at the enable flag.
>  # Value 'no' means user forced disable, don't check anything else.
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5d7fb725/mgmt/Rollback.cc
> ----------------------------------------------------------------------
> diff --git a/mgmt/Rollback.cc b/mgmt/Rollback.cc
> index 7af7b95..39c747c 100644
> --- a/mgmt/Rollback.cc
> +++ b/mgmt/Rollback.cc
> @@ -170,9 +170,9 @@ root_access_needed(root_access_needed_)
>        // But if we can not get it, just give up, assume the error
>        //   is transient and use the current time
>        if (statFile(ACTIVE_VERSION, &fileInfo) < 0) {
> -        fileLastModified = fileInfo.st_mtime;
> +        fileLastModified = TS_ARCHIVE_STAT_MTIME(fileInfo);
>        } else {
> -        fileLastModified = time(NULL) - ink_timezone();
> +        fileLastModified = (time(NULL) - ink_timezone()) *
> 1000000000;

Could we use a constant for this number?
I'm pretty sure you got it right every time, but I didn't check -
and frankly, I couldn't be arsed to do something, that a computer does way better.

>        }
>  
>      } else {
> @@ -183,7 +183,7 @@ root_access_needed(root_access_needed_)
>      }
>    } else {
>  
> -    fileLastModified = fileInfo.st_mtime;
> +    fileLastModified = TS_ARCHIVE_STAT_MTIME(fileInfo);
>      currentVersion = highestSeen + 1;
>  
>      // Make sure that we have a backup of the file
> @@ -524,12 +524,12 @@ Rollback::internalUpdate(textBuffer * buf,
> version_t newVersion, bool notifyChan
>  
>    // Now we need to get the modification time off of the new active
>    file
>    if (statFile(ACTIVE_VERSION, &fileInfo) >= 0) {
> -    fileLastModified = fileInfo.st_mtime;
> +    fileLastModified = TS_ARCHIVE_STAT_MTIME(fileInfo);
>    } else {
>      // We really shoudn't fail to stat the file since we just
>      //  created it.  If we do, just punt and just use the current
>      //  time.
> -    fileLastModified = time(NULL) - ink_timezone();
> +    fileLastModified = (time(NULL) - ink_timezone()) * 1000000000;
>    }
>  
>    // Check to see if we need to delete an excess backup versions
> @@ -995,7 +995,7 @@ Rollback::checkForUserUpdate()
>      return false;
>    }
>  
> -  if (fileLastModified < fileInfo.st_mtime) {
> +  if (fileLastModified < TS_ARCHIVE_STAT_MTIME(fileInfo)) {
>  
>      // We've been modified, Roll a new version
>      currentVersion_local = this->getCurrentVersion();
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5d7fb725/mgmt/Rollback.h
> ----------------------------------------------------------------------
> diff --git a/mgmt/Rollback.h b/mgmt/Rollback.h
> index 40adbde..04e03ed 100644
> --- a/mgmt/Rollback.h
> +++ b/mgmt/Rollback.h
> @@ -42,6 +42,14 @@
>  #define ACTIVE_VERSION 0
>  #define INVALID_VERSION -1
>  
> +#if HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC
> +#define TS_ARCHIVE_STAT_MTIME(t)    ((t).st_mtime * 1000000000 +
> (t).st_mtimespec.tv_nsec)
> +#elif HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
> +#define TS_ARCHIVE_STAT_MTIME(t)    ((t).st_mtime * 1000000000 +
> (t).st_mtim.tv_nsec)
> +#else
> +#define TS_ARCHIVE_STAT_MTIME(t)    ((t).st_mtime * 1000000000)
> +#endif
> +
>  typedef int version_t;
>  
>  enum RollBackCodes
> 
> 

-- 
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.galic@brainsware.org
URL: http://brainsware.org/
GPG: 6880 4155 74BD FD7C B515  2EA5 4B1D 9E08 A097 C9AE


Mime
View raw message