Compare commits

...

42 Commits

Author SHA1 Message Date
ccostino
cfbf2b9042 Merge pull request #1850 from GSA/system_certs
revert pip-system-certs
2025-07-22 13:21:50 -04:00
Kenneth Kehl
72f2ccb91a revert pip-system-certs 2025-07-22 09:42:37 -07:00
ccostino
4945fdbfcd Merge pull request #1849 from GSA/system_certs
add system certs package
2025-07-22 11:53:25 -04:00
Kenneth Kehl
51437226d0 update to latest on main 2025-07-22 07:09:52 -07:00
Alex Janousek
bcc35b7109 Merge pull request #1848 from GSA/dependabot/pip/cyclonedx-python-lib-11.0.0
Bump cyclonedx-python-lib from 10.4.1 to 11.0.0
2025-07-21 17:34:54 -04:00
dependabot[bot]
c6da71e4f7 Bump cyclonedx-python-lib from 10.4.1 to 11.0.0
Bumps [cyclonedx-python-lib](https://github.com/CycloneDX/cyclonedx-python-lib) from 10.4.1 to 11.0.0.
- [Release notes](https://github.com/CycloneDX/cyclonedx-python-lib/releases)
- [Changelog](https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/CycloneDX/cyclonedx-python-lib/compare/v10.4.1...v11.0.0)

---
updated-dependencies:
- dependency-name: cyclonedx-python-lib
  dependency-version: 11.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 21:28:23 +00:00
Alex Janousek
7d391fb721 Merge pull request #1847 from GSA/dependabot/pip/virtualenv-20.32.0
Bump virtualenv from 20.31.2 to 20.32.0
2025-07-21 17:20:40 -04:00
Kenneth Kehl
620a62a8e9 add system certs package 2025-07-21 11:09:08 -07:00
dependabot[bot]
7eef69573d Bump virtualenv from 20.31.2 to 20.32.0
Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.31.2 to 20.32.0.
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/virtualenv/compare/20.31.2...20.32.0)

---
updated-dependencies:
- dependency-name: virtualenv
  dependency-version: 20.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 17:00:43 +00:00
Alex Janousek
d797f372ae Merge pull request #1846 from GSA/dependabot-code-owner-update
Updated dependabot yml to remove depecrated review assignment
2025-07-21 12:14:56 -04:00
alexjanousekGSA
e2c03cab93 Updated dependabot yml to remove depecrated review assignment 2025-07-21 12:03:22 -04:00
ccostino
fd4fef2618 Merge pull request #1845 from GSA/dependabot/pip/phonenumbers-9.0.10
Bump phonenumbers from 9.0.9 to 9.0.10
2025-07-21 11:40:02 -04:00
dependabot[bot]
2d404037cf Bump phonenumbers from 9.0.9 to 9.0.10
Bumps [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) from 9.0.9 to 9.0.10.
- [Commits](https://github.com/daviddrysdale/python-phonenumbers/compare/v9.0.9...r9.0.10)

---
updated-dependencies:
- dependency-name: phonenumbers
  dependency-version: 9.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 14:23:51 +00:00
ccostino
155a1df161 Merge pull request #1844 from GSA/dependabot/pip/jsonschema-4.25.0
Bump jsonschema from 4.24.1 to 4.25.0
2025-07-21 10:07:35 -04:00
dependabot[bot]
caac56f980 Bump jsonschema from 4.24.1 to 4.25.0
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.24.1 to 4.25.0.
- [Release notes](https://github.com/python-jsonschema/jsonschema/releases)
- [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.24.1...v4.25.0)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-version: 4.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 13:27:34 +00:00
ccostino
977be477b4 Merge pull request #1843 from GSA/dependabot/pip/s3transfer-0.13.1
Bump s3transfer from 0.13.0 to 0.13.1
2025-07-21 09:16:40 -04:00
dependabot[bot]
37a63b4512 Bump s3transfer from 0.13.0 to 0.13.1
Bumps [s3transfer](https://github.com/boto/s3transfer) from 0.13.0 to 0.13.1.
- [Changelog](https://github.com/boto/s3transfer/blob/develop/CHANGELOG.rst)
- [Commits](https://github.com/boto/s3transfer/compare/0.13.0...0.13.1)

---
updated-dependencies:
- dependency-name: s3transfer
  dependency-version: 0.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 21:23:19 +00:00
ccostino
465613b6f1 Merge pull request #1842 from GSA/invite_redis
fix minor bug where subject is missing
2025-07-18 13:18:14 -04:00
Kenneth Kehl
b7cece97ad fix minor bug where subject is missing 2025-07-18 09:50:36 -07:00
ccostino
3d3f902b88 Merge pull request #1840 from GSA/dependabot/pip/jsonschema-4.24.1
Bump jsonschema from 4.24.0 to 4.24.1
2025-07-17 17:48:11 -04:00
dependabot[bot]
3cd6544884 Bump jsonschema from 4.24.0 to 4.24.1
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.24.0 to 4.24.1.
- [Release notes](https://github.com/python-jsonschema/jsonschema/releases)
- [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.24.0...v4.24.1)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-version: 4.24.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-17 21:39:46 +00:00
ccostino
bf89fcb585 Merge pull request #1839 from GSA/eventlet_again
reduce eventlet concurrency and turn off debug
2025-07-17 12:02:53 -04:00
Kenneth Kehl
ad75c86330 reduce eventlet concurrency and turn off debug 2025-07-17 07:58:38 -07:00
Beverly Nguyen
c657cfdb2d Merge pull request #1838 from GSA/invites_again 2025-07-16 12:14:24 -07:00
ccostino
64254e5ef7 Merge pull request #1837 from GSA/dependabot/pip/faker-37.4.2
Bump faker from 37.4.0 to 37.4.2
2025-07-16 15:10:39 -04:00
Kenneth Kehl
98b2149cf5 more invite debug 2025-07-16 11:33:15 -07:00
ccostino
72ccdd28f2 Merge pull request #1836 from GSA/celery_tasks
fix monkeypatching
2025-07-15 17:55:55 -04:00
dependabot[bot]
bc537e375d Bump faker from 37.4.0 to 37.4.2
Bumps [faker](https://github.com/joke2k/faker) from 37.4.0 to 37.4.2.
- [Release notes](https://github.com/joke2k/faker/releases)
- [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/joke2k/faker/compare/v37.4.0...v37.4.2)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 37.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 21:38:58 +00:00
Kenneth Kehl
7deec9a6c6 fix monkeypatching 2025-07-15 14:03:08 -07:00
ccostino
964b48a23d Merge pull request #1835 from GSA/celery_tasks
Celery tasks
2025-07-15 12:23:17 -04:00
Kenneth Kehl
8924fb7683 merge from main 2025-07-15 08:15:28 -07:00
Kenneth Kehl
f080c94093 fix eventlet 2025-07-15 08:15:08 -07:00
ccostino
011801c89b Merge pull request #1834 from GSA/dependabot/pip/certifi-2025.7.14
Bump certifi from 2025.7.9 to 2025.7.14
2025-07-15 09:19:31 -04:00
ccostino
0999ba058e Merge pull request #1833 from GSA/dependabot/pip/freezegun-1.5.3
Bump freezegun from 1.5.2 to 1.5.3
2025-07-15 08:49:53 -04:00
dependabot[bot]
707f33ba3a Bump certifi from 2025.7.9 to 2025.7.14
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.7.9 to 2025.7.14.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.07.09...2025.07.14)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.7.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 03:22:00 +00:00
dependabot[bot]
5907782ab9 Bump freezegun from 1.5.2 to 1.5.3
Bumps [freezegun](https://github.com/spulec/freezegun) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/spulec/freezegun/releases)
- [Changelog](https://github.com/spulec/freezegun/blob/master/CHANGELOG)
- [Commits](https://github.com/spulec/freezegun/compare/1.5.2...1.5.3)

---
updated-dependencies:
- dependency-name: freezegun
  dependency-version: 1.5.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 02:07:19 +00:00
Kenneth Kehl
f891c897b8 Merge pull request #1832 from GSA/celery_tasks
fix celery bug
2025-07-14 12:30:16 -07:00
Kenneth Kehl
be443172b0 fix celery bug 2025-07-14 07:49:34 -07:00
Beverly Nguyen
e7b7919a48 Merge pull request #1830 from GSA/eventlet
whoops
2025-07-11 12:38:08 -07:00
Kenneth Kehl
9cca19d765 whoops 2025-07-11 12:06:24 -07:00
ccostino
3509527be6 Merge pull request #1828 from GSA/eventlet
add eventlet debugging
2025-07-11 13:42:59 -04:00
Kenneth Kehl
7fac1c41a8 add eventlet debugging 2025-07-11 08:13:19 -07:00
13 changed files with 496 additions and 460 deletions

View File

@@ -13,5 +13,3 @@ updates:
- "dependabot" # Custom label to identify Dependabot PRs
assignees:
- "alexjanousekGSA"
reviewers:
- "alexjanousekGSA"

View File

@@ -70,8 +70,8 @@ run-celery: ## Run celery, TODO remove purge for staging/prod
-A run_celery.notify_celery worker \
--pidfile="/tmp/celery.pid" \
--loglevel=INFO \
--pool=threads
--concurrency=10
--pool=eventlet
--concurrency=20
.PHONY: dead-code

View File

@@ -5,6 +5,7 @@ import time
from io import StringIO
import botocore
import eventlet
from boto3 import Session
from flask import current_app
@@ -249,7 +250,7 @@ def get_s3_files():
for object_key in object_keys:
read_s3_file(bucket_name, object_key, s3res)
count = count + 1
time.sleep(0.2)
eventlet.sleep(0.2)
except Exception:
current_app.logger.exception(
f"Trouble reading {object_key} which is # {count} during cache regeneration"
@@ -410,7 +411,7 @@ def get_job_from_s3(service_id, job_id):
)
retries += 1
sleep_time = backoff_factor * (2**retries) # Exponential backoff
time.sleep(sleep_time)
eventlet.sleep(sleep_time)
continue
else:
# Typically this is "NoSuchKey"

View File

@@ -73,10 +73,12 @@ def delete_notifications_older_than_retention():
)
@notify_celery.task(name="delete-sms-notifications-older-than-retention")
def delete_sms_notifications_older_than_retention():
_delete_notifications_older_than_retention_by_type(NotificationType.SMS)
@notify_celery.task(name="delete-email-notifications-older-than-retention")
def delete_email_notifications_older_than_retention():
_delete_notifications_older_than_retention_by_type(NotificationType.EMAIL)

View File

@@ -1,6 +1,6 @@
import json
import time
import eventlet
from celery.signals import task_postrun
from flask import current_app
from requests import HTTPError, RequestException, request
@@ -84,7 +84,7 @@ def process_job(job_id, sender_id=None):
process_row(row, template, job, service, sender_id=sender_id)
count = count + 1
if count % 3 == 0:
time.sleep(1)
eventlet.sleep(1)
# End point/Exit point for message send flow.
job_complete(job, start=start)

View File

@@ -151,7 +151,7 @@ class AwsCloudwatchClient(Client):
# result = temp_client.get_query_results(queryId=query_id)
# if result['status'] == 'Complete':
# break
# time.sleep(1)
# eventlet.sleep(1)
# delivery_receipts = []
# for log in result['results']:

View File

@@ -189,8 +189,9 @@ def preview_template_by_id_and_service_id(service_id, template_id):
},
status_code=400,
)
data["subject"] = template_object.subject
# Only emails have subjects, SMS do not
if hasattr(template_object, "subject"):
data["subject"] = template_object.subject
data["content"] = template_object.content_with_placeholders_filled_in
return jsonify(data)

View File

@@ -89,6 +89,7 @@ def handle_integrity_error(exc):
@user_blueprint.route("", methods=["POST"])
def create_user():
current_app.logger.info("#invites: enter create_user()")
req_json = request.get_json()
user_to_create = create_user_schema.load(req_json)
@@ -96,6 +97,7 @@ def create_user():
user_to_create, password=req_json.get("password"), validated_email_access=True
)
result = user_to_create.serialize()
current_app.logger.info("#invites: returning the new user")
return jsonify(data=result), 201
@@ -597,14 +599,22 @@ def set_permissions(user_id, service_id):
@user_blueprint.route("/get-login-gov-user", methods=["POST"])
def get_user_login_gov_user():
current_app.logger.info("#invites: enter get_user_login_gov_user")
request_args = request.get_json()
login_uuid = request_args["login_uuid"]
email = request_args["email"]
current_app.logger.info(
f"#invites: login_uuid {login_uuid} email is null? {email is None}"
)
user = get_login_gov_user(login_uuid, email)
if user is None:
current_app.logger.info("#invites: couldn't find user, returning empty data")
return jsonify({})
current_app.logger.info("#invites: found the user, serializing")
result = user.serialize()
current_app.logger.info("#invites: returning successfully")
return jsonify(data=result)
@@ -615,9 +625,7 @@ def fetch_user_by_email():
hilite(f"enter fetch_user_by_email with {request.get_json()}")
)
email = email_data_request_schema.load(request.get_json())
debug_not_production(hilite(f"request schema loads {email}"))
fetched_user = get_user_by_email(email["email"])
debug_not_production(hilite(f"fetched user is {fetched_user}"))
result = fetched_user.serialize()
return jsonify(data=result)
except Exception as e:

View File

@@ -1,11 +1,17 @@
import os
import socket
import sys
import traceback
import eventlet
import gunicorn
eventlet.monkey_patch() # this has to be called before other imports or monkey patching doesn't happen
import os # noqa
import socket # noqa
import sys # noqa
import traceback # noqa
import eventlet.debug as debug # noqa
import gunicorn # noqa
# This will give us a better stack trace if blocking occurs (if True)
debug.hub_blocking_detection(False)
workers = 4
worker_class = "eventlet"
worker_connections = 256

View File

@@ -26,7 +26,7 @@ applications:
- type: worker
instances: ((worker_instances))
memory: ((worker_memory))
command: newrelic-admin run-program celery -A run_celery.notify_celery worker --loglevel=INFO --pool=threads --concurrency=10 --prefetch-multiplier=2
command: newrelic-admin run-program celery -A run_celery.notify_celery worker --loglevel=INFO --pool=eventlet --concurrency=20 --prefetch-multiplier=2
- type: scheduler
instances: 1
memory: ((scheduler_memory))

View File

@@ -179,7 +179,7 @@ class JSONFormatter(BaseJSONFormatter):
# for example, delivery receipts, where the formatting fails
# This is not a huge problem, don't dump stack traces into the logs
# for it.
logger.warning(f"failed to format log message: {e}")
logger.debug(f"failed to format log message: {e}")
except IndexError as e:
logger.exception(f"failed to format log message: {e}")
logger.debug(f"failed to format log message: {e}")
return log_record

882
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -34,7 +34,7 @@ flask-redis = "==0.4.0"
flask-sqlalchemy = "^3.1.1"
gunicorn = {version = "==23.0.0", extras = ["eventlet"]}
iso8601 = "==2.1.0"
jsonschema = {version = "==4.24.0", extras = ["format"]}
jsonschema = {version = "==4.25.0", extras = ["format"]}
lxml = "==6.0.0"
marshmallow = "^4.0.0"
marshmallow-sqlalchemy = "^1.4.2"
@@ -46,13 +46,13 @@ pyjwt = "==2.10.1"
python-dotenv = "==1.1.1"
sqlalchemy = "==2.0.41"
werkzeug = "^3.0.6"
faker = "^37.4.0"
faker = "^37.4.2"
async-timeout = "^5.0.1"
bleach = "^6.1.0"
geojson = "^3.2.0"
numpy = "^2.3.1"
ordered-set = "^4.1.0"
phonenumbers = "^9.0.9"
phonenumbers = "^9.0.10"
python-json-logger = "^3.3.0"
regex = "^2024.11.6"
shapely = "^2.1.1"
@@ -66,7 +66,7 @@ markupsafe = "^3.0.2"
pycparser = "^2.22"
python-dateutil = "^2.9.0.post0"
pyyaml = "^6.0.2"
s3transfer = "^0.13.0"
s3transfer = "^0.13.1"
six = "^1.16.0"
urllib3 = "^2.5.0"
webencodings = "^0.5.1"
@@ -75,7 +75,7 @@ jinja2 = "^3.1.6"
redis = "^5.0.8"
requests = "^2.32.4"
flask-socketio = "^5.5.1"
virtualenv = "^20.31.2"
virtualenv = "^20.32.0"
marshmallow-enum = "^1.5.1"
awscli = "^1.40.36"
typing-extensions = "^4.14.1"
@@ -87,12 +87,12 @@ pytest = "^8.4.0"
awscli = "^1.33.32"
bandit = "*"
black = "^25.1.0"
cyclonedx-python-lib = "^10.4.1"
cyclonedx-python-lib = "^11.0.0"
cloudfoundry-client = "*"
exceptiongroup = "==1.3.0"
flake8 = "^7.3.0"
flake8-bugbear = "^24.12.12"
freezegun = "^1.5.2"
freezegun = "^1.5.3"
honcho = "*"
isort = "^6.0.1"
jinja2-cli = {version = "==0.8.2", extras = ["yaml"]}