Commit Graph

8700 Commits

Author SHA1 Message Date
pyup-bot
3661fa4888 Update sqlalchemy from 1.2.14 to 1.2.16 2019-01-11 15:30:45 +00:00
Pea (Malgorzata Tyczynska)
cfb55daa12 Merge pull request #2292 from alphagov/exclude_cancelled_from_requested
Remove cancelled from requested statuses in service statistics
2019-01-11 15:01:20 +00:00
Chris Hill-Scott
3559063b91 Add letter logo for North Somerset council 2019-01-11 14:44:23 +00:00
Pea Tyczynska
bd5126481c Remove cancelled from requested statuses in service statistics 2019-01-11 14:27:54 +00:00
Leo Hemsted
5e7bff08aa Merge pull request #2287 from alphagov/redis-bump
bump utils (inc redis bump)
2019-01-11 10:59:46 +00:00
Leo Hemsted
a970318586 Merge pull request #2294 from alphagov/remove-unused-functions
remove unused usage functions
2019-01-11 10:59:17 +00:00
Pea Tyczynska
685bff40d1 Stop validate function from being too complex by moving subfunctions out of it 2019-01-10 17:31:32 +00:00
Rebecca Law
507138cc94 Create a new query for template monthly stats. 2019-01-10 16:24:51 +00:00
Leo Hemsted
20fe055ac9 remove unused usage functions 2019-01-10 16:08:15 +00:00
Pea Tyczynska
5a1094b6fd Throw error if postage parameter for precompiled POST request incorrect 2019-01-10 16:04:06 +00:00
Pea (Malgorzata Tyczynska)
c5e5c86982 Merge pull request #2290 from alphagov/its_not_a_failure_to_cancel
Cancelled notifications don't show as failures in statistics
2019-01-10 15:09:30 +00:00
Pea Tyczynska
56bae2b077 Allow users to set postage per precompiled letter 2019-01-09 17:49:19 +00:00
Alexey Bezhan
4a26ee1813 Set statement timeout on all DB connections
A recent issue with a long-running query (#2288) highlighted the
fact that even though the original HTTP connection might be closed
(for example after gorouter timeout of 15 minutes, which returns a
504 response to the client), the request worker will not be stopped.

This means that the worker is spending time and potentially DB
resources generating a response that will never be delivered.

Gunicorn's timeout setting only applies to sync workers and there
doesn't seem to be an option to interrupt individual requests in
gevent/eventlet deployments.

Since the most likely (and potentially most dangerous) scenario for
this is a long-running DB query, we can set a statement timeout on
our DB connections. This will raise a sqlalchemy.exc.OperationalError
(wrapping psycopg2.extensions.QueryCanceledError), interrupting the
request after the given timeout has been reached.

This is a Postgres client setting, so the database itself will abort
the transaction when it reaches the set timeout.

Since this will also apply to our celery tasks (including potentially
long-running nightly tasks) we set a timeout of 20 minutes to begin
with.

This can potentially be split in the future to set a different value
for each app, so that we could limit API requests even more.
2019-01-09 14:36:50 +00:00
Alexey Bezhan
1719f31909 Merge pull request #2284 from alphagov/add-count-pages-flag-to-service-notifications
Don't return pagination links for API Message log requests
2019-01-09 14:36:36 +00:00
Leo Hemsted
d4570281fa Merge pull request #2288 from alphagov/plat-adm-fix
Platform admin fix
2019-01-09 14:04:30 +00:00
Pea Tyczynska
e179e1e4a4 Update test 2019-01-09 13:30:28 +00:00
Leo Hemsted
3e21f57481 fix platform admin stats row-order bug
now that we're reading from two tables (ft_notification_status and
notifications) for stats, we'll get a couple of rows for each
notification type. If a service doesn't have any rows in one of those
tables, the query will return a row with nulls for the notification
types and counts. Some services will have history but no stats from
today, others will have data from today but no history.

This commit acknowledges that any row might have nulls, not just the
first row.
2019-01-09 11:43:40 +00:00
Leo Hemsted
5d838415d3 fix filter to look at right table
a query for notifications was filtering on FtNotificationStatus - we
aren't joining to that table in the query, so sqlalchemy added a cross
join between ft_notification_status (3.7k rows) and Notifications (3.9m
rows), resulting in a 1.3 trillion row materialised table. This query
took 17 hours and pending.

Also, remove orders from querys other than the outer one, since we're
grouping anyway.
2019-01-09 11:26:08 +00:00
Pea Tyczynska
e3a79e80c9 Cancelled notifications don't show as failures in statistics 2019-01-08 17:50:34 +00:00
Rebecca Law
9c75e08e2c Merge pull request #2282 from alphagov/optimise-platform-admin-live-services
Optimise platform admin live services
2019-01-08 15:27:46 +00:00
Leo Hemsted
7f9b64d3df bump utils (inc redis bump) 2019-01-08 15:02:09 +00:00
Alexey Bezhan
47c403f6ab Don't return pagination links for API Message log requests
Flask-SQLAlchemy paginate function issues a separate query to get
the total count of rows for a given filter. This query (with
filters used by the API integration Message log page) is slow for
services with large number of notifications.

Since Message log page doesn't actually allow users to paginate
through the response (it only shows the last 50 messages) we can
use limit instead of paginate, which requires passing in another
flag from admin to the dao method.

`count` flag has been added to `paginate` in March 2018, however
there was no release of flask-sqlalchemy since then, so we need
to pull the dev version of the package from Github.
2019-01-08 13:22:27 +00:00
Rebecca Law
8fbe60bb90 Remove unused query 2019-01-07 15:37:26 +00:00
Rebecca Law
4522547753 Merge branch 'master' into optimise-platform-admin-live-services 2019-01-07 15:25:50 +00:00
Leo Hemsted
fe498f9a79 Merge pull request #2280 from alphagov/redis-pin
pin redis to 2.x
2019-01-07 11:30:34 +00:00
Leo Hemsted
40a17a0e93 pin redis to 2.x
while we sort out v3 compatibility
2019-01-07 11:14:25 +00:00
pyup-bot
b068a850fa Update pytest-cov from 2.6.0 to 2.6.1 2019-01-07 02:12:39 +00:00
Rebecca Law
bd9a6352fd Optimise the query for getting the platform statistics for all services. The page should render for all time after this change.
This is one step closer to eliminating the need to read from NotificationHistory.
2019-01-04 16:45:39 +00:00
Leo Hemsted
63e16ea0ba Merge pull request #2276 from alphagov/utils-bump
bump utils
2019-01-04 16:37:09 +00:00
Leo Hemsted
2e53ba1e3e bump utils
brings in https://github.com/alphagov/notifications-utils/pull/563
2019-01-04 16:17:52 +00:00
Chris Hill-Scott
90a6ec5a15 Merge pull request #2275 from alphagov/trailing-new-line-before-markdown
Bump utils to 30.7.2
2019-01-04 11:28:17 +00:00
Leo Hemsted
ea3070d645 Merge pull request #2272 from alphagov/delivery-receipt-logging
log more info when we receive multiple delivery callbacks
2019-01-04 09:52:54 +00:00
Leo Hemsted
021625abb3 make sure log line works if notification still in created 2019-01-03 17:08:17 +00:00
Leo Hemsted
2355ee011f log more info when we receive multiple delivery callbacks for one notification
Previously, we logged a warning containing the notification reference
and new status. However it wasn't a great message - this new one
includes the notification id, the old status, the time difference and
more.

This separates out logs for callbacks for notifications we don't know
(error level) and duplicates (info level).
2019-01-03 17:08:16 +00:00
Pea (Malgorzata Tyczynska)
d5130d8579 Merge pull request #2273 from alphagov/cautious_prepping_for_pytest4
Preparation for pytest 4 by sorting our use of fixtures in conftest
2019-01-03 11:12:52 +00:00
Pea Tyczynska
eea324a19d Add flag on create_service to decide whether we should also check if service exists 2019-01-03 10:57:29 +00:00
Pea Tyczynska
f79c0b03e7 Sample job uses create_template instead of sample template 2019-01-03 10:52:14 +00:00
Pea Tyczynska
cde30de100 Use create_template instead of sample_template in sample_notification 2019-01-03 10:52:14 +00:00
Pea Tyczynska
154257027f Nothing in conftest uses sample_service now :) 2019-01-03 10:52:14 +00:00
Pea Tyczynska
d367daaf6e Some more conftest fixtures use create_service instead of sample_service 2019-01-03 10:52:14 +00:00
Pea Tyczynska
a3310c2da6 sample_job uses create_service instead of sample_service 2019-01-03 10:52:14 +00:00
Pea Tyczynska
0bcf13d85c sample_api_key uses create_service instead of sample_service 2019-01-03 10:52:14 +00:00
Pea Tyczynska
e8ce669b72 Use create_service instead of sample_service when creating sample_email_template for tests 2019-01-03 10:52:14 +00:00
Pea Tyczynska
95115e7ae6 Use create_service instead of sample_service when creating service permission for tests 2019-01-03 10:52:14 +00:00
Pea Tyczynska
3306b9fc97 use conditional in create_service to establish user 2019-01-03 10:52:14 +00:00
Pea Tyczynska
923703120b Check if test service exists before it gets created 2019-01-03 10:52:14 +00:00
Pea Tyczynska
c12594949f Refactor service_factory 2019-01-03 10:49:38 +00:00
Leo Hemsted
016421a6b2 Merge pull request #2274 from alphagov/multi-worker-exit-script
fix multi worker exit script
2019-01-02 15:50:23 +00:00
Chris Hill-Scott
98e501c4c4 Bump utils to 30.7.2 2019-01-02 15:45:06 +00:00
Leo Hemsted
80454579ee fix multi worker exit script
previously the script would:

try and SIGTERM each celery process every second for the 9 second
timeout, and then SIGKILL every second after, with no upper bound.

This commit changes this to:
* SIGTERM each process once.
* Wait nine seconds (checking if the pid files are still present each
  second)
* SIGKILL any remaining processes once.
* exit
2019-01-02 15:15:46 +00:00