Fix crawl /errors API endpoint (#813)
* Fix crawl error slicing to ensure a consistent number of errors per page * Fix total count in paginated API response
This commit is contained in:
		
							parent
							
								
									60581411eb
								
							
						
					
					
						commit
						b2005fe389
					
				| @ -780,17 +780,17 @@ class CrawlOps: | |||||||
|         # Zero-index page for query |         # Zero-index page for query | ||||||
|         page = page - 1 |         page = page - 1 | ||||||
|         skip = page * page_size |         skip = page * page_size | ||||||
|  |         upper_bound = skip + page_size - 1 | ||||||
| 
 | 
 | ||||||
|         try: |         try: | ||||||
|             redis = await self.get_redis(crawl_id) |             redis = await self.get_redis(crawl_id) | ||||||
|             errors = await redis.lrange(f"{crawl_id}:e", skip, page_size) |             errors = await redis.lrange(f"{crawl_id}:e", skip, upper_bound) | ||||||
|  |             total = await redis.llen(f"{crawl_id}:e") | ||||||
|         except exceptions.ConnectionError: |         except exceptions.ConnectionError: | ||||||
|             # pylint: disable=raise-missing-from |             # pylint: disable=raise-missing-from | ||||||
|             raise HTTPException(status_code=503, detail="redis_connection_error") |             raise HTTPException(status_code=503, detail="redis_connection_error") | ||||||
| 
 | 
 | ||||||
|         parsed_errors = parse_jsonl_error_messages(errors) |         parsed_errors = parse_jsonl_error_messages(errors) | ||||||
|         total = len(parsed_errors) |  | ||||||
| 
 |  | ||||||
|         return parsed_errors, total |         return parsed_errors, total | ||||||
| 
 | 
 | ||||||
|     async def get_redis(self, crawl_id): |     async def get_redis(self, crawl_id): | ||||||
| @ -1240,10 +1240,10 @@ def init_crawls_api(app, mdb, users, crawl_manager, crawl_config_ops, orgs, user | |||||||
| 
 | 
 | ||||||
|         if crawl.finished: |         if crawl.finished: | ||||||
|             skip = (page - 1) * pageSize |             skip = (page - 1) * pageSize | ||||||
|             upper_bound = skip + pageSize - 1 |             upper_bound = skip + pageSize | ||||||
|             errors = crawl.errors[skip:upper_bound] |             errors = crawl.errors[skip:upper_bound] | ||||||
|             parsed_errors = parse_jsonl_error_messages(errors) |             parsed_errors = parse_jsonl_error_messages(errors) | ||||||
|             total = len(parsed_errors) |             total = len(crawl.errors) | ||||||
|             return paginated_format(parsed_errors, total, page, pageSize) |             return paginated_format(parsed_errors, total, page, pageSize) | ||||||
| 
 | 
 | ||||||
|         errors, total = await ops.get_errors_from_redis(crawl_id, pageSize, page) |         errors, total = await ops.get_errors_from_redis(crawl_id, pageSize, page) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user