Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: sitescripts/stats/bin/logprocessor.py

Issue 29329315: Issue 2983 - Make sure that the new lastVersion format is recognized and exceptions don`t break eve… (Closed)
Patch Set: Created Oct. 21, 2015, 9:53 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | sitescripts/stats/test/logprocessor.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # coding: utf-8 1 # coding: utf-8
2 2
3 # This file is part of the Adblock Plus web scripts, 3 # This file is part of the Adblock Plus web scripts,
4 # Copyright (C) 2006-2015 Eyeo GmbH 4 # Copyright (C) 2006-2015 Eyeo GmbH
5 # 5 #
6 # Adblock Plus is free software: you can redistribute it and/or modify 6 # Adblock Plus is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License version 3 as 7 # it under the terms of the GNU General Public License version 3 as
8 # published by the Free Software Foundation. 8 # published by the Free Software Foundation.
9 # 9 #
10 # Adblock Plus is distributed in the hope that it will be useful, 10 # Adblock Plus is distributed in the hope that it will be useful,
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 110
111 def wrapped(arg): 111 def wrapped(arg):
112 if arg in results: 112 if arg in results:
113 result = results[arg] 113 result = results[arg]
114 del results[arg] 114 del results[arg]
115 else: 115 else:
116 if results.entries_left > 0: 116 if results.entries_left > 0:
117 results.entries_left -= 1 117 results.entries_left -= 1
118 else: 118 else:
119 results.popitem(last=False) 119 results.popitem(last=False)
120 result = func(arg) 120 try:
121 result = func(arg)
122 except:
Sebastian Noack 2015/10/21 15:19:20 You probably should explicitly catch Exception. Ot
Wladimir Palant 2015/10/21 15:42:40 Why shouldn't it? The exception is re-raised, the
Sebastian Noack 2015/10/21 15:49:13 Acknowledged.
123 results.entries_left += 1
124 raise
121 results[arg] = result 125 results[arg] = result
122 return result 126 return result
123 return wrapped 127 return wrapped
124 128
125 129
126 def cache_last(func): 130 def cache_last(func):
127 """ 131 """
128 Decorator that memoizes the last return value of a function in case it is 132 Decorator that memoizes the last return value of a function in case it is
129 called again with the same parameters. 133 called again with the same parameters.
130 """ 134 """
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 except: 264 except:
261 path = urlparts.path 265 path = urlparts.path
262 return path[1:], urlparts.query 266 return path[1:], urlparts.query
263 267
264 @cache_lru 268 @cache_lru
265 def parse_query(query): 269 def parse_query(query):
266 return urlparse.parse_qs(query) 270 return urlparse.parse_qs(query)
267 271
268 @cache_lru 272 @cache_lru
269 def parse_lastversion(last_version): 273 def parse_lastversion(last_version):
274 if '-' in last_version:
275 last_version = last_version.split('-', 1)[0]
Sebastian Noack 2015/10/21 15:19:20 Nit: last_version.split('-')[0] would do as will a
Wladimir Palant 2015/10/21 15:42:40 Sure, but the point is doing as little work as pos
Sebastian Noack 2015/10/21 15:49:13 More than one dash given is a rather theoretical s
Sebastian Noack 2015/10/21 16:10:34 I did some more benchmarking, and confirmed that t
Wladimir Palant 2015/10/21 16:16:03 No, it's a very real scenario if more than one not
Sebastian Noack 2015/10/21 16:19:51 Well, I'm not arguing. I just try to understand wh
270 return datetime.strptime(last_version, "%Y%m%d%H%M") 276 return datetime.strptime(last_version, "%Y%m%d%H%M")
271 277
272 @cache_lru 278 @cache_lru
273 def get_week(date): 279 def get_week(date):
274 return date.isocalendar()[0:2] 280 return date.isocalendar()[0:2]
275 281
276 def parse_downloader_query(info): 282 def parse_downloader_query(info):
277 params = parse_query(info["query"]) 283 params = parse_query(info["query"])
278 for param in ("addonName", "addonVersion", "application", "applicationVersion" , "platform", "platformVersion"): 284 for param in ("addonName", "addonVersion", "application", "applicationVersion" , "platform", "platformVersion"):
279 info[param] = params.get(param, ["unknown"])[0] 285 info[param] = params.get(param, ["unknown"])[0]
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 parser.add_argument("mirror_name", nargs="?", help="Name of the mirror server that the file belongs to") 570 parser.add_argument("mirror_name", nargs="?", help="Name of the mirror server that the file belongs to")
565 parser.add_argument("server_type", nargs="?", help="Server type like download, update or subscription") 571 parser.add_argument("server_type", nargs="?", help="Server type like download, update or subscription")
566 parser.add_argument("log_file", nargs="?", help="Log file path, can be a local file path, http:// or ssh:// URL") 572 parser.add_argument("log_file", nargs="?", help="Log file path, can be a local file path, http:// or ssh:// URL")
567 args = parser.parse_args() 573 args = parser.parse_args()
568 574
569 if args.mirror_name and args.server_type and args.log_file: 575 if args.mirror_name and args.server_type and args.log_file:
570 sources = [(args.mirror_name, args.server_type, args.log_file)] 576 sources = [(args.mirror_name, args.server_type, args.log_file)]
571 else: 577 else:
572 sources = get_stats_files() 578 sources = get_stats_files()
573 parse_sources(sources, args.factor, args.verbose) 579 parse_sources(sources, args.factor, args.verbose)
OLDNEW
« no previous file with comments | « no previous file | sitescripts/stats/test/logprocessor.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld