Skip to content

Commit 57549d3

Browse files
authored
fix: gbfs validator scheduler failure (#984)
1 parent 465bc5d commit 57549d3

File tree

4 files changed

+13
-14
lines changed

4 files changed

+13
-14
lines changed

functions-python/gbfs_validator/src/gbfs_utils.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
Gbfsvalidationreport,
1313
Gbfsnotice,
1414
)
15+
from sqlalchemy.orm import Session
1516
from shared.dataset_service.main import Status
17+
from shared.helpers.database import with_db_session
1618

1719

1820
class GBFSValidator:
@@ -107,8 +109,9 @@ def validate_gbfs_feed(self, bucket: storage.Bucket) -> Dict[str, Any]:
107109
}
108110

109111

112+
@with_db_session(echo=False)
110113
def save_snapshot_and_report(
111-
session, snapshot: Gbfssnapshot, validation_result: Dict[str, Any]
114+
snapshot: Gbfssnapshot, validation_result: Dict[str, Any], db_session: Session
112115
):
113116
"""Save the snapshot and validation report to the database."""
114117
validation_report = Gbfsvalidationreport(
@@ -132,8 +135,8 @@ def save_snapshot_and_report(
132135
for error in file_summary["groupedErrors"]
133136
]
134137
snapshot.gbfsvalidationreports = [validation_report]
135-
session.add(snapshot)
136-
session.commit()
138+
db_session.add(snapshot)
139+
db_session.commit()
137140

138141

139142
def fetch_gbfs_files(url: str) -> Dict[str, Any]:

functions-python/gbfs_validator/src/main.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
PipelineStage,
1919
MaxExecutionsReachedError,
2020
)
21-
from shared.helpers.database import Database, with_db_session
21+
from shared.helpers.database import with_db_session
2222
from shared.helpers.logger import Logger, StableIdFilter
2323
from shared.helpers.parser import jsonify_pubsub
2424
from gbfs_utils import (
@@ -33,12 +33,13 @@
3333
BUCKET_NAME = os.getenv("BUCKET_NAME", "mobilitydata-gbfs-snapshots-dev")
3434

3535

36-
@with_db_session
36+
@with_db_session(echo=False)
3737
def fetch_all_gbfs_feeds(db_session: "Session") -> List[Gbfsfeed]:
3838
try:
3939
gbfs_feeds = (
4040
db_session.query(Gbfsfeed).options(joinedload(Gbfsfeed.gbfsversions)).all()
4141
)
42+
db_session.expunge_all()
4243
return gbfs_feeds
4344
except Exception as e:
4445
logging.error(f"Error fetching all GBFS feeds: {e}")
@@ -103,9 +104,7 @@ def gbfs_validator_pubsub(cloud_event: CloudEvent):
103104
try:
104105
snapshot = validator.create_snapshot(feed_id)
105106
validation_results = validator.validate_gbfs_feed(bucket)
106-
db = Database(database_url=os.getenv("FEEDS_DATABASE_URL"))
107-
with db.start_db_session() as session:
108-
save_snapshot_and_report(session, snapshot, validation_results)
107+
save_snapshot_and_report(snapshot, validation_results)
109108
except Exception as e:
110109
error_message = f"Error validating GBFS feed: {e}"
111110
logging.error(f"{error_message}\nTraceback:\n{traceback.format_exc()}")

functions-python/gbfs_validator/tests/test_gbfs_utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ def test_save_snapshot_and_report(self, mock_gbfsnotice, mock_gbfsvalidationrepo
175175
},
176176
}
177177

178-
save_snapshot_and_report(mock_session, mock_snapshot, validation_result)
178+
save_snapshot_and_report(
179+
mock_snapshot, validation_result, db_session=mock_session
180+
)
179181

180182
mock_session.add.assert_called_once_with(mock_snapshot)
181183
mock_session.commit.assert_called_once()

functions-python/gbfs_validator/tests/test_gbfs_validator.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ def tearDown(self) -> None:
3333
"VALIDATOR_URL": "https://mock-validator-url.com",
3434
},
3535
)
36-
@patch("main.Database")
3736
@patch("main.DatasetTraceService")
3837
@patch("main.fetch_gbfs_files")
3938
@patch("main.GBFSValidator.create_gbfs_json_with_bucket_paths")
@@ -52,12 +51,8 @@ def test_gbfs_validator_pubsub(
5251
mock_create_gbfs_json,
5352
mock_fetch_gbfs_files,
5453
mock_dataset_trace_service,
55-
mock_database,
5654
):
5755
# Prepare mocks
58-
mock_session = MagicMock()
59-
mock_database.return_value.start_db_session.return_value = mock_session
60-
6156
mock_trace_service = MagicMock()
6257
mock_dataset_trace_service.return_value = mock_trace_service
6358

0 commit comments

Comments
 (0)