Skip to content

Commit f919e92

Browse files
authored
Merge pull request #2747 from chaoss/dev
Release
2 parents 9d69d7b + ffbac7b commit f919e92

File tree

154 files changed

+2492
-1929
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+2492
-1929
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Augur NEW Release v0.62.6
1+
# Augur NEW Release v0.63.0
22

33
Augur is primarily a data engineering tool that makes it possible for data scientists to gather open source software community data. Less data carpentry for everyone else!
44
The primary way of looking at Augur data is through [8Knot](https://github.com/oss-aspen/8knot) ... A public instance of 8Knot is available at https://metrix.chaoss.io ... That is tied to a public instance of Augur at https://ai.chaoss.io
@@ -10,7 +10,8 @@ The primary way of looking at Augur data is through [8Knot](https://github.com/o
1010
## NEW RELEASE ALERT!
1111
### [If you want to jump right in, updated docker build/compose and bare metal installation instructions are available here](docs/new-install.md)
1212

13-
Augur is now releasing a dramatically improved new version to the main branch. It is also available here: https://github.com/chaoss/augur/releases/tag/v0.62.6
13+
Augur is now releasing a dramatically improved new version to the main branch. It is also available here: https://github.com/chaoss/augur/releases/tag/v0.63.0
14+
1415
- The `main` branch is a stable version of our new architecture, which features:
1516
- Dramatic improvement in the speed of large scale data collection (100,000+ repos). All data is obtained for 100k+ repos within 2 weeks.
1617
- A new job management architecture that uses Celery and Redis to manage queues, and enables users to run a Flower job monitoring dashboard

augur/api/gunicorn_conf.py

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,48 @@
11
# from augur import ROOT_AUGUR_DIRECTORY
22
import multiprocessing
33
import logging
4-
import os
54
from pathlib import Path
65
from glob import glob
7-
import shutil
86

9-
from augur.application.db.session import DatabaseSession
10-
from augur.application.config import AugurConfig
7+
from augur.application.db.lib import get_value, get_section
8+
from augur.application.db import dispose_database_engine
119

1210
logger = logging.getLogger(__name__)
13-
with DatabaseSession(logger) as session:
1411

15-
augur_config = AugurConfig(logger, session)
16-
17-
18-
# ROOT_AUGUR_DIRECTORY = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
1912

20-
# base_log_dir = ROOT_AUGUR_DIRECTORY + "/logs/"
13+
# ROOT_AUGUR_DIRECTORY = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
14+
15+
# base_log_dir = ROOT_AUGUR_DIRECTORY + "/logs/"
16+
17+
# Path(base_log_dir).mkdir(exist_ok=True)
2118

22-
# Path(base_log_dir).mkdir(exist_ok=True)
19+
workers = multiprocessing.cpu_count() * 2 + 1
20+
umask = 0o007
21+
reload = True
22+
reload_extra_files = glob(str(Path.cwd() / '**/*.j2'), recursive=True)
2323

24-
workers = multiprocessing.cpu_count() * 2 + 1
25-
umask = 0o007
26-
reload = True
27-
reload_extra_files = glob(str(Path.cwd() / '**/*.j2'), recursive=True)
24+
# set the log location for gunicorn
25+
logs_directory = get_value('Logging', 'logs_directory')
26+
accesslog = f"{logs_directory}/gunicorn.log"
27+
errorlog = f"{logs_directory}/gunicorn.log"
2828

29-
# set the log location for gunicorn
30-
logs_directory = augur_config.get_value('Logging', 'logs_directory')
31-
accesslog = f"{logs_directory}/gunicorn.log"
32-
errorlog = f"{logs_directory}/gunicorn.log"
29+
ssl_bool = get_value('Server', 'ssl')
30+
31+
if ssl_bool is True:
32+
33+
workers = int(get_value('Server', 'workers'))
34+
bind = '%s:%s' % (get_value("Server", "host"), get_value("Server", "port"))
35+
timeout = int(get_value('Server', 'timeout'))
36+
certfile = str(get_value('Server', 'ssl_cert_file'))
37+
keyfile = str(get_value('Server', 'ssl_key_file'))
38+
39+
else:
40+
workers = int(get_value('Server', 'workers'))
41+
bind = '%s:%s' % (get_value("Server", "host"), get_value("Server", "port"))
42+
timeout = int(get_value('Server', 'timeout'))
3343

34-
ssl_bool = augur_config.get_value('Server', 'ssl')
3544

36-
if ssl_bool is True:
45+
def worker_exit(server, worker):
46+
print("Stopping gunicorn worker process")
47+
dispose_database_engine()
3748

38-
workers = int(augur_config.get_value('Server', 'workers'))
39-
bind = '%s:%s' % (augur_config.get_value("Server", "host"), augur_config.get_value("Server", "port"))
40-
timeout = int(augur_config.get_value('Server', 'timeout'))
41-
certfile = str(augur_config.get_value('Server', 'ssl_cert_file'))
42-
keyfile = str(augur_config.get_value('Server', 'ssl_key_file'))
43-
44-
else:
45-
workers = int(augur_config.get_value('Server', 'workers'))
46-
bind = '%s:%s' % (augur_config.get_value("Server", "host"), augur_config.get_value("Server", "port"))
47-
timeout = int(augur_config.get_value('Server', 'timeout'))

augur/api/metrics/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import datetime
1414
import sqlalchemy as s
1515
import pandas as pd
1616
from augur.api.util import register_metric
17-
from augur.application.db.engine import engine
1817
```
1918
3. Defining the function
2019
1. Add the decorator @register_metric to the function

augur/api/metrics/commit.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import datetime
77
import sqlalchemy as s
88
import pandas as pd
9-
from augur.api.util import register_metric
9+
from flask import current_app
1010

11-
from ..server import engine
11+
from augur.api.util import register_metric
1212

1313
@register_metric()
1414
def committers(repo_group_id, repo_id=None, begin_date=None, end_date=None, period='month'):
@@ -90,7 +90,7 @@ def committers(repo_group_id, repo_id=None, begin_date=None, end_date=None, peri
9090
"""
9191
)
9292

93-
with engine.connect() as conn:
93+
with current_app.engine.connect() as conn:
9494
results = pd.read_sql(committersSQL, conn, params={'repo_id': repo_id,
9595
'repo_group_id': repo_group_id,'begin_date': begin_date, 'end_date': end_date, 'period':period})
9696

@@ -168,7 +168,7 @@ def annual_commit_count_ranked_by_new_repo_in_repo_group(repo_group_id, repo_id=
168168
ORDER BY YEAR ASC
169169
""".format(table, period))
170170

171-
with engine.connect() as conn:
171+
with current_app.engine.connect() as conn:
172172
results = pd.read_sql(cdRgNewrepRankedCommitsSQL, conn, params={'repo_id': repo_id,
173173
'repo_group_id': repo_group_id,'begin_date': begin_date, 'end_date': end_date})
174174
return results
@@ -267,7 +267,7 @@ def annual_commit_count_ranked_by_repo_in_repo_group(repo_group_id, repo_id=None
267267
LIMIT 10
268268
""")
269269

270-
with engine.connect() as conn:
270+
with current_app.engine.connect() as conn:
271271
results = pd.read_sql(cdRgTpRankedCommitsSQL, conn, params={ "repo_group_id": repo_group_id,
272272
"repo_id": repo_id})
273273
return results
@@ -299,7 +299,7 @@ def top_committers(repo_group_id, repo_id=None, year=None, threshold=0.8):
299299
ORDER BY patches DESC) a
300300
""")
301301

302-
with engine.connect() as conn:
302+
with current_app.engine.connect() as conn:
303303
results = pd.read_sql(total_commits_SQL, conn,
304304
params={'year': year, 'repo_group_id': repo_group_id})
305305
else:
@@ -312,7 +312,7 @@ def top_committers(repo_group_id, repo_id=None, year=None, threshold=0.8):
312312
ORDER BY patches DESC) a
313313
""")
314314

315-
with engine.connect() as conn:
315+
with current_app.engine.connect() as conn:
316316
results = pd.read_sql(total_commits_SQL, conn,
317317
params={'year': year, 'repo_id': repo_id})
318318

@@ -339,7 +339,7 @@ def top_committers(repo_group_id, repo_id=None, year=None, threshold=0.8):
339339
ORDER BY commits DESC
340340
""")
341341

342-
with engine.connect() as conn:
342+
with current_app.engine.connect() as conn:
343343
results = pd.read_sql(committers_SQL, conn,
344344
params={'year': year, 'repo_group_id': repo_group_id})
345345
else:
@@ -359,7 +359,7 @@ def top_committers(repo_group_id, repo_id=None, year=None, threshold=0.8):
359359
ORDER BY commits DESC
360360
""")
361361

362-
with engine.connect() as conn:
362+
with current_app.engine.connect() as conn:
363363
results = pd.read_sql(committers_SQL, conn,
364364
params={'year': year, 'repo_id': repo_id})
365365

augur/api/metrics/contributor.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import datetime
77
import sqlalchemy as s
88
import pandas as pd
9+
from flask import current_app
10+
911
from augur.api.util import register_metric
10-
import uuid
1112

12-
from ..server import engine
1313

1414
@register_metric()
1515
def contributors(repo_group_id, repo_id=None, period='day', begin_date=None, end_date=None):
@@ -125,7 +125,7 @@ def contributors(repo_group_id, repo_id=None, period='day', begin_date=None, end
125125
ORDER BY total DESC
126126
""")
127127

128-
with engine.connect() as conn:
128+
with current_app.engine.connect() as conn:
129129
results = pd.read_sql(contributorsSQL, conn, params={'repo_id': repo_id, 'period': period,
130130
'begin_date': begin_date, 'end_date': end_date})
131131
else:
@@ -212,7 +212,7 @@ def contributors(repo_group_id, repo_id=None, period='day', begin_date=None, end
212212
ORDER BY total DESC
213213
""")
214214

215-
with engine.connect() as conn:
215+
with current_app.engine.connect() as conn:
216216
results = pd.read_sql(contributorsSQL, conn, params={'repo_group_id': repo_group_id, 'period': period,
217217
'begin_date': begin_date, 'end_date': end_date})
218218
return results
@@ -283,7 +283,7 @@ def contributors_new(repo_group_id, repo_id=None, period='day', begin_date=None,
283283
GROUP BY date, repo.repo_id, repo_name
284284
""")
285285

286-
with engine.connect() as conn:
286+
with current_app.engine.connect() as conn:
287287
results = pd.read_sql(contributorsNewSQL, conn, params={'repo_id': repo_id, 'period': period,
288288
'begin_date': begin_date, 'end_date': end_date})
289289
else:
@@ -333,7 +333,7 @@ def contributors_new(repo_group_id, repo_id=None, period='day', begin_date=None,
333333
GROUP BY date, repo.repo_id, repo_name
334334
""")
335335

336-
with engine.connect() as conn:
336+
with current_app.engine.connect() as conn:
337337
results = pd.read_sql(contributorsNewSQL, conn, params={'repo_group_id': repo_group_id, 'period': period,
338338
'begin_date': begin_date, 'end_date': end_date})
339339
return results
@@ -355,7 +355,7 @@ def lines_changed_by_author(repo_group_id, repo_id=None):
355355
GROUP BY commits.repo_id, date_trunc('week', cmt_author_date::date), cmt_author_affiliation, cmt_author_email, repo_name
356356
ORDER BY date_trunc('week', cmt_author_date::date) ASC;
357357
""")
358-
with engine.connect() as conn:
358+
with current_app.engine.connect() as conn:
359359
results = pd.read_sql(linesChangedByAuthorSQL, conn, params={"repo_id": repo_id})
360360
return results
361361
else:
@@ -367,7 +367,7 @@ def lines_changed_by_author(repo_group_id, repo_id=None):
367367
GROUP BY repo_id, date_trunc('week', cmt_author_date::date), cmt_author_affiliation, cmt_author_email
368368
ORDER BY date_trunc('week', cmt_author_date::date) ASC;
369369
""")
370-
with engine.connect() as conn:
370+
with current_app.engine.connect() as conn:
371371
results = pd.read_sql(linesChangedByAuthorSQL, conn, params={"repo_group_id": repo_group_id})
372372
return results
373373

@@ -426,7 +426,7 @@ def contributors_code_development(repo_group_id, repo_id=None, period='all', beg
426426
GROUP BY a.email, a.repo_id, repo_name
427427
""")
428428

429-
with engine.connect() as conn:
429+
with current_app.engine.connect() as conn:
430430
results = pd.read_sql(contributorsSQL, conn, params={'repo_id': repo_id, 'period': period,
431431
'begin_date': begin_date, 'end_date': end_date})
432432
else:
@@ -462,7 +462,7 @@ def contributors_code_development(repo_group_id, repo_id=None, period='all', beg
462462
ORDER BY commits desc, email
463463
""")
464464

465-
with engine.connect() as conn:
465+
with current_app.engine.connect() as conn:
466466
results = pd.read_sql(contributorsSQL, conn, params={'repo_group_id': repo_group_id, 'period': period,
467467
'begin_date': begin_date, 'end_date': end_date})
468468
return results

augur/api/metrics/deps.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55

66
import sqlalchemy as s
77
import pandas as pd
8-
from augur.api.util import register_metric
98
import datetime
9+
from flask import current_app
10+
11+
from augur.api.util import register_metric
1012

11-
from ..server import engine
1213

1314
@register_metric()
1415
def deps(repo_group_id, repo_id=None, period='day', begin_date=None, end_date=None):
@@ -46,8 +47,8 @@ def deps(repo_group_id, repo_id=None, period='day', begin_date=None, end_date=No
4647
AND repo_dependencies.repo_id = :repo_id
4748
""")
4849

49-
with engine.connect() as conn:
50-
results = pd.read_sql(depsSQL, conn)
50+
with current_app.engine.connect() as conn:
51+
results = pd.read_sql(depsSQL, conn, params={'repo_id': repo_id})
5152

5253
else:
5354

@@ -71,8 +72,8 @@ def deps(repo_group_id, repo_id=None, period='day', begin_date=None, end_date=No
7172
AND repo.repo_group_id = :repo_group_id
7273
""")
7374

74-
with engine.connect() as conn:
75-
results = pd.read_sql(depsSQL, conn)
75+
with current_app.engine.connect() as conn:
76+
results = pd.read_sql(depsSQL, conn, params={'repo_group_id': repo_group_id})
7677
return results
7778

7879

augur/api/metrics/insight.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import pandas as pd
88
from augur.api.util import register_metric
99

10-
from ..server import engine
10+
from flask import current_app
1111

1212
@register_metric(type="repo_group_only")
1313
def top_insights(repo_group_id, num_repos=6):
@@ -29,6 +29,6 @@ def top_insights(repo_group_id, num_repos=6):
2929
LIMIT :num_repos
3030
)
3131
""")
32-
with engine.connect() as conn:
32+
with current_app.engine.connect() as conn:
3333
results = pd.read_sql(topInsightsSQL, conn, params={'repo_group_id': repo_group_id, 'num_repos': num_repos})
3434
return results

0 commit comments

Comments
 (0)