You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by ke...@apache.org on 2018/01/23 19:18:35 UTC
allura git commit: [#8178] Configurable bin count invalidation delay;
adds missing calls to invalidate_bin_counts
Repository: allura
Updated Branches:
refs/heads/kt/8178 [created] ded1e3232
[#8178] Configurable bin count invalidation delay; adds missing calls to invalidate_bin_counts
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/ded1e323
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/ded1e323
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/ded1e323
Branch: refs/heads/kt/8178
Commit: ded1e32327c17d8a103153b9ced4891fc6d11e3b
Parents: 40f8071
Author: Kenton Taylor <kt...@slashdotmedia.com>
Authored: Tue Jan 23 19:17:19 2018 +0000
Committer: Kenton Taylor <kt...@slashdotmedia.com>
Committed: Tue Jan 23 19:17:19 2018 +0000
----------------------------------------------------------------------
Allura/development.ini | 2 ++
ForgeTracker/forgetracker/model/ticket.py | 5 +++--
ForgeTracker/forgetracker/tracker_main.py | 8 +++++---
3 files changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/ded1e323/Allura/development.ini
----------------------------------------------------------------------
diff --git a/Allura/development.ini b/Allura/development.ini
index 47fee90..cd5404e 100644
--- a/Allura/development.ini
+++ b/Allura/development.ini
@@ -589,6 +589,8 @@ short_url.url_pattern = {base_url}/{nbhd}/{project}/{mount_point}/{short_name}
;
userstats.count_lines_of_code = true
+; to avoid race condition, this needs to be a bit longer than the SOLR commitWithin delay.
+; forgetracker.bin_invalidate_delay = 5
;
; Optional settings for profiling with https://pypi.python.org/pypi/keas.profile
http://git-wip-us.apache.org/repos/asf/allura/blob/ded1e323/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 8f64ed1..a3ec9dc 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -239,13 +239,14 @@ class Globals(MappedClass):
# the task clears it when it's done. However, in the off chance
# that the task fails or is interrupted, we ignore the flag if it's
# older than 5 minutes.
- invalidation_expiry = datetime.utcnow() - timedelta(minutes=5)
+ delay = int(tg_config.get('forgetracker.bin_invalidate_delay', 5))
+ invalidation_expiry = datetime.utcnow() - timedelta(minutes=delay)
if self._bin_counts_invalidated is not None and \
self._bin_counts_invalidated > invalidation_expiry:
return
self._bin_counts_invalidated = datetime.utcnow()
from forgetracker import tasks # prevent circular import
- tasks.update_bin_counts.post(self.app_config_id, delay=5)
+ tasks.update_bin_counts.post(self.app_config_id, delay=delay)
def sortable_custom_fields_shown_in_search(self):
def solr_type(field_name):
http://git-wip-us.apache.org/repos/asf/allura/blob/ded1e323/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index a924cc9..1f9822b 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -726,7 +726,7 @@ class RootController(BaseController, FeedController):
if not isinstance(filter, dict):
# JsonConverter above can return an int, string, etc, if users give bad inputs, but it needs to be a dict
filter = {}
-
+
# it's just our original query mangled and sent back to us
kw.pop('q', None)
result = TM.Ticket.paged_query_or_search(c.app.config, c.user,
@@ -829,7 +829,7 @@ class RootController(BaseController, FeedController):
def search(self, q=None, query=None, project=None, columns=None, page=0, sort=None,
deleted=False, filter=None, **kw):
require(has_access(c.app, 'read'))
-
+
if deleted and not has_access(c.app, 'delete'):
deleted = False
if query and not q:
@@ -1458,6 +1458,7 @@ class TicketController(BaseController, FeedController):
dt=datetime.utcnow())
self.ticket.summary += suffix
flash('Ticket successfully deleted')
+ c.app.globals.invalidate_bin_counts()
return dict(location='../' + str(self.ticket.ticket_num))
@without_trailing_slash
@@ -1470,6 +1471,7 @@ class TicketController(BaseController, FeedController):
' \d+:\d+:\d+ \d+-\d+-\d+$', '', self.ticket.summary)
M.Shortlink.from_artifact(self.ticket)
flash('Ticket successfully restored')
+ c.app.globals.invalidate_bin_counts()
return dict(location='../' + str(self.ticket.ticket_num))
@require_post()
@@ -1950,7 +1952,7 @@ class MilestoneController(BaseController):
show_deleted = [False, True]
elif deleted and not has_access(c.app, 'delete'):
deleted = False
-
+
result = TM.Ticket.paged_query_or_search(c.app.config, c.user,
self.mongo_query,
self.solr_query,