mirror of
				https://github.com/arcan1s/ahriman.git
				synced 2025-10-30 21:33:43 +00:00 
			
		
		
		
	bug: fix invalid logs rotation
This commit is contained in:
		| @ -153,10 +153,13 @@ class LogsOperations(Operations): | ||||
|                 """ | ||||
|                 delete from logs | ||||
|                 where (package_base, repository, process_id) in ( | ||||
|                   select package_base, repository, process_id from logs | ||||
|                   where repository = :repository | ||||
|                   group by package_base, repository, process_id | ||||
|                   order by min(created) desc limit -1 offset :offset | ||||
|                   select package_base, repository, process_id from ( | ||||
|                     select package_base, repository, process_id, row_number() over (partition by package_base order by max(created) desc) as rn | ||||
|                     from logs | ||||
|                     where repository = :repository | ||||
|                     group by package_base, repository, process_id | ||||
|                   ) | ||||
|                   where rn > :offset | ||||
|                 ) | ||||
|                 """, | ||||
|                 { | ||||
|  | ||||
| @ -93,6 +93,27 @@ def test_logs_insert_get_multi(database: SQLite, package_ahriman: Package) -> No | ||||
|     ] | ||||
|  | ||||
|  | ||||
| def test_logs_rotate_remove_older(database: SQLite, package_ahriman: Package, | ||||
|                                   package_python_schedule: Package) -> None: | ||||
|     """ | ||||
|     must correctly remove old records | ||||
|     """ | ||||
|     database.logs_insert(LogRecord(LogRecordId(package_ahriman.base, "1", "p1"), 42.0, "message 1")) | ||||
|     database.logs_insert(LogRecord(LogRecordId(package_ahriman.base, "1", "p1"), 43.0, "message 2")) | ||||
|     database.logs_insert(LogRecord(LogRecordId(package_ahriman.base, "2", "p2"), 44.0, "message 3")) | ||||
|     database.logs_insert(LogRecord(LogRecordId(package_ahriman.base, "2", "p2"), 45.0, "message 4")) | ||||
|     database.logs_insert(LogRecord(LogRecordId(package_python_schedule.base, "3", "p1"), 40.0, "message 5")) | ||||
|  | ||||
|     database.logs_rotate(1) | ||||
|     assert database.logs_get(package_ahriman.base) == [ | ||||
|         LogRecord(LogRecordId(package_ahriman.base, "2", "p2"), 44.0, "message 3"), | ||||
|         LogRecord(LogRecordId(package_ahriman.base, "2", "p2"), 45.0, "message 4"), | ||||
|     ] | ||||
|     assert database.logs_get(package_python_schedule.base) == [ | ||||
|         LogRecord(LogRecordId(package_python_schedule.base, "3", "p1"), 40.0, "message 5"), | ||||
|     ] | ||||
|  | ||||
|  | ||||
| def test_logs_rotate_remove_all(database: SQLite, package_ahriman: Package) -> None: | ||||
|     """ | ||||
|     must remove all records when rotating with keep_last_records is 0 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user