Mercurial > hg > mercurial
changeset 667:bcee3a8b2c7b
Add TTL for list file policy
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 04 Oct 2013 15:59:42 +0400 |
parents | 557d41234a97 |
children | c32869bd757b |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java |
diffstat | 5 files changed, 25 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java Tue Oct 01 12:52:11 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java Fri Oct 04 15:59:42 2013 +0400 @@ -22,18 +22,25 @@ public class ListFilesSupport implements ListDirectChildrenPolicy { private final MercurialVcsSupport myVcs; + private final ServerPluginConfig myConfig; private final HgVcsRootFactory myHgVcsRootFactory; + private long myLastSyncTime = -1; public ListFilesSupport(@NotNull MercurialVcsSupport vcs, + @NotNull ServerPluginConfig config, @NotNull HgVcsRootFactory hgVcsRootFactory) { myVcs = vcs; + myConfig = config; myHgVcsRootFactory = hgVcsRootFactory; } @NotNull public List<VcsFileData> listFiles(@NotNull VcsRoot root, @NotNull String dir) throws VcsException { HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); - myVcs.syncRepository(hgRoot); + if (isOutOfDate()) { + myVcs.syncRepository(hgRoot); + myLastSyncTime = System.currentTimeMillis(); + } String dirPath = isEmpty(dir) || dir.endsWith("/") ? dir : dir + "/"; return listFilesIn(hgRoot, dirPath); } @@ -58,4 +65,10 @@ } return result; } + + private boolean isOutOfDate() { + if (myLastSyncTime == -1) + return true; + return System.currentTimeMillis() - myLastSyncTime > myConfig.listFilesTTLSeconds() * 1000; + } }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Tue Oct 01 12:52:11 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Fri Oct 04 15:59:42 2013 +0400 @@ -653,7 +653,7 @@ @Override public ListFilesPolicy getListFilesPolicy() { - return new ListFilesSupport(this, myHgVcsRootFactory); + return new ListFilesSupport(this, myConfig, myHgVcsRootFactory); }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Tue Oct 01 12:52:11 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Fri Oct 04 15:59:42 2013 +0400 @@ -35,4 +35,6 @@ public boolean reportSubrepoChangesFileStatus(); public boolean allowSourceCaching(); + + public int listFilesTTLSeconds(); }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Tue Oct 01 12:52:11 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Fri Oct 04 15:59:42 2013 +0400 @@ -96,4 +96,8 @@ public boolean allowSourceCaching() { return TeamCityProperties.getBoolean("teamcity.hg.allowSourceCaching"); } + + public int listFilesTTLSeconds() { + return TeamCityProperties.getInteger("teamcity.hg.listFilesTTLSeconds", 60); + } }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Tue Oct 01 12:52:11 2013 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Fri Oct 04 15:59:42 2013 +0400 @@ -82,6 +82,10 @@ public boolean allowSourceCaching() { return false; } + + public int listFilesTTLSeconds() { + return 0; + } }; }