<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/0c29e737db23e1d975e856592b7817c60ce86fa1" style="text-decoration: none; font-weight: bold; color: #573;">pullrequests: explicitly sort statuses and comments by id - and thus presumably in the right order used for computation of latest status</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/0c29e737db23e1d975e856592b7817c60ce86fa1">0c29e737</a><pre>pullrequests: explicitly sort statuses and comments by id - and thus presumably in the right order used for computation of latest status

 M kallithea/model/db.py (2 lines added, 2 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/d36dc6617d877a563a8173ac947fe763690ae60a" style="text-decoration: none; font-weight: bold; color: #573;">pullrequests: add index - optimize some slow queries</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/d36dc6617d877a563a8173ac947fe763690ae60a">d36dc661</a><pre>pullrequests: add index - optimize some slow queries

 M kallithea/model/db.py (1 lines added, 0 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/20a094053606dab166d93344da2616cab44c1bac" style="text-decoration: none; font-weight: bold; color: #573;">pullrequests: optimize iteration over reviewers - avoid fetching users one by one  .reviewers was mainly used for iteration and then dereferencing .user one ...</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/20a094053606dab166d93344da2616cab44c1bac">20a09405</a><pre>pullrequests: optimize iteration over reviewers - avoid fetching users one by one

.reviewers was mainly used for iteration and then dereferencing .user one by
one. That gave lots of queries and round trips to the database and was slow.

Instead, do something else. Either query directly or use a new method for
getting the list of reviewer users.

Reviewers will explicitly be shown in the order they have been added (assuming
database id's are monotonic).

 M kallithea/controllers/pullrequests.py (5 lines added, 2 lines removed)
 M kallithea/model/changeset_status.py (4 lines added, 4 lines removed)
 M kallithea/model/comment.py (1 lines added, 1 lines removed)
 M kallithea/model/db.py (8 lines added, 0 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/b03233c4a438d78103eb5b48b48f0dd04a5805b6" style="text-decoration: none; font-weight: bold; color: #573;">scm: simplify get_repos and get rid of RepoList overloads  The RepoList variants might have made sense before any repo info was stored in the database. Now i...</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/b03233c4a438d78103eb5b48b48f0dd04a5805b6">b03233c4</a><pre>scm: simplify get_repos and get rid of RepoList overloads

The RepoList variants might have made sense before any repo info was stored in
the database. Now it has no value and doesn't help at all.

 M kallithea/controllers/home.py (16 lines added, 7 lines removed)
 M kallithea/model/scm.py (10 lines added, 115 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/c4ec645b42ceb39ba19207c44480462c6a7c12a8" style="text-decoration: none; font-weight: bold; color: #573;">helpers: cache user_or_none results in beaker long_term cache  Avoids repeated expensive 'LIKE' lookup on email addresses extracted from changeset authors.  ...</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/c4ec645b42ceb39ba19207c44480462c6a7c12a8">c4ec645b</a><pre>helpers: cache user_or_none results in beaker long_term cache

Avoids repeated expensive 'LIKE' lookup on email addresses extracted from
changeset authors.

This information is only used for display of changelog information.

The cache will never expire - only when the server process expires. That is ok
for this very static information and the way it is used.

 M kallithea/lib/helpers.py (6 lines added, 1 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/041e8a5a224623fbac238eb8dbff9e3f37f236ef" style="text-decoration: none; font-weight: bold; color: #573;">db: inline repo __get_instance to scm_instance_no_cache  Having two names for the same thing just made it look even more complicated than it is.  There _shou...</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/041e8a5a224623fbac238eb8dbff9e3f37f236ef">041e8a5a</a><pre>db: inline repo __get_instance to scm_instance_no_cache

Having two names for the same thing just made it look even more complicated
than it is.

There _should_ not be any reason for calling scm_instance_no_cache directly
anywhere ... but for now that is how it is.

 M kallithea/model/db.py (2 lines added, 5 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/b76cdfccb5b8ad3903817c603c30c31468851044" style="text-decoration: none; font-weight: bold; color: #573;">db: name the scm_instance_cached cache entries - reduce the risk of collisions  - and same with other cache regions</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/b76cdfccb5b8ad3903817c603c30c31468851044">b76cdfcc</a><pre>db: name the scm_instance_cached cache entries - reduce the risk of collisions

- and same with other cache regions

 M kallithea/controllers/feed.py (4 lines added, 4 lines removed)
 M kallithea/controllers/summary.py (2 lines added, 2 lines removed)
 M kallithea/model/db.py (2 lines added, 2 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/5cb780fd494d13bc296d15fc63b35f6af12b6698" style="text-decoration: none; font-weight: bold; color: #573;">tests: invalidate cache for new repositories - make tests more stable if garbage has been left behind in the db  It could be argued that this should be done ...</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/5cb780fd494d13bc296d15fc63b35f6af12b6698">5cb780fd</a><pre>tests: invalidate cache for new repositories - make tests more stable if garbage has been left behind in the db

It could be argued that this should be done elsewhere in the app ...

 M kallithea/tests/fixture.py (2 lines added, 0 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/6afa528ee30e0d1abcfbd4dbf8329090cca41ea0" style="text-decoration: none; font-weight: bold; color: #573;">db: get rid of vcs_full_cache - it should always be used  It might make tests less deterministic, but it makes sure that we test what we actually use.</a></h1>
<div id="body">
kiilerix committed on 2016-03-14 15:17:46<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/6afa528ee30e0d1abcfbd4dbf8329090cca41ea0">6afa528e</a><pre>db: get rid of vcs_full_cache - it should always be used

It might make tests less deterministic, but it makes sure that we test what we actually use.

 M development.ini (0 lines added, 3 lines removed)
 M docs/usage/performance.rst (6 lines added, 10 lines removed)
 M kallithea/bin/template.ini.mako (0 lines added, 3 lines removed)
 M kallithea/config/deployment.ini_tmpl (0 lines added, 3 lines removed)
 M kallithea/model/db.py (1 lines added, 5 lines removed)
 M kallithea/tests/test.ini (0 lines added, 5 lines removed)
 M scripts/generate-ini.py (0 lines added, 2 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/82f818616265900aafc2d3267fec18c5b1e253c8" style="text-decoration: none; font-weight: bold; color: #573;">db: cache SCM instance short-term (tied to SQLAlchemy session lifetime)  Repeatedly checking whether SCM instances are invalidated is slow, and we don't actu...</a></h1>
<div id="body">
kwi committed on 2016-03-08 11:28:06<br />branch: default<br />tag: tip<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/82f818616265900aafc2d3267fec18c5b1e253c8">82f81861</a><pre>db: cache SCM instance short-term (tied to SQLAlchemy session lifetime)

Repeatedly checking whether SCM instances are invalidated is slow, and
we don't actually _want_ SCM instances to invalidate half-way through
a request either.

Therefore cache them in on the db.Repository object, the lifetime
of which is directly tied to the lifetime of the SQLAlchemy session,
the lifetime of which is tied directly to the individual HTTP request.
This way, we only check for invalidation the first time the SCM instance
is accessed in a request.

This will improve performance in cases where we have (by definition) badly
written code that retrieves repo objects several times.

 M kallithea/model/db.py (5 lines added, 1 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>