Skip to content

Commit 931b0ca

Browse files
committed
update metadata fixes
1 parent 638756f commit 931b0ca

File tree

5 files changed

+14
-39
lines changed

5 files changed

+14
-39
lines changed

src/apify/storage_clients/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from crawlee.storage_clients import MemoryStorageClient
22

33
from ._apify import ApifyStorageClient
4-
from ._file_system import FileSystemStorageClient
4+
from ._file_system import ApifyFileSystemStorageClient as FileSystemStorageClient
55

66
__all__ = [
77
'ApifyStorageClient',

src/apify/storage_clients/_apify/_key_value_store_client.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,7 @@ async def drop(self) -> None:
149149
@override
150150
async def get_value(self, key: str) -> KeyValueStoreRecord | None:
151151
response = await self._api_client.get_record(key)
152-
record = KeyValueStoreRecord.model_validate(response) if response else None
153-
await self._update_metadata()
154-
return record
152+
return KeyValueStoreRecord.model_validate(response) if response else None
155153

156154
@override
157155
async def set_value(self, key: str, value: Any, content_type: str | None = None) -> None:
@@ -161,13 +159,11 @@ async def set_value(self, key: str, value: Any, content_type: str | None = None)
161159
value=value,
162160
content_type=content_type,
163161
)
164-
await self._update_metadata()
165162

166163
@override
167164
async def delete_value(self, key: str) -> None:
168165
async with self._lock:
169166
await self._api_client.delete_record(key=key)
170-
await self._update_metadata()
171167

172168
@override
173169
async def iterate_keys(
@@ -202,8 +198,6 @@ async def iterate_keys(
202198

203199
exclusive_start_key = list_key_page.next_exclusive_start_key
204200

205-
await self._update_metadata()
206-
207201
@override
208202
async def record_exists(self, key: str) -> bool:
209203
return await self._api_client.record_exists(key=key)
@@ -231,8 +225,3 @@ async def get_public_url(self, key: str) -> str:
231225
public_url = public_url.with_query(signature=create_hmac_signature(url_signing_secret_key, key))
232226

233227
return str(public_url)
234-
235-
async def _update_metadata(self) -> None:
236-
"""Update the key-value store metadata with current information."""
237-
metadata = await self._api_client.get()
238-
self._metadata = KeyValueStoreMetadata.model_validate(metadata)

src/apify/storage_clients/_apify/_request_queue_client.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,6 @@ async def add_batch_of_requests(
202202
# Send requests to API
203203
response = await self._api_client.batch_add_requests(requests=requests_dict, forefront=forefront)
204204

205-
# Update metadata after adding requests
206-
await self._update_metadata()
207-
208205
return AddRequestsResponse.model_validate(response)
209206

210207
@override
@@ -218,7 +215,6 @@ async def get_request(self, request_id: str) -> Request | None:
218215
The request or None if not found.
219216
"""
220217
response = await self._api_client.get_request(request_id)
221-
await self._update_metadata()
222218

223219
if response is None:
224220
return None
@@ -295,9 +291,6 @@ async def mark_request_as_handled(self, request: Request) -> ProcessedRequest |
295291
forefront=False,
296292
hydrated_request=request,
297293
)
298-
299-
# Update metadata after marking request as handled
300-
await self._update_metadata()
301294
except Exception as exc:
302295
logger.debug(f'Error marking request {request.id} as handled: {exc!s}')
303296
return None
@@ -346,9 +339,6 @@ async def reclaim_request(
346339
await self._delete_request_lock(request.id, forefront=forefront)
347340
except Exception as err:
348341
logger.debug(f'Failed to delete request lock for request {request.id}', exc_info=err)
349-
350-
# Update metadata after reclaiming request
351-
await self._update_metadata()
352342
except Exception as exc:
353343
logger.debug(f'Error reclaiming request {request.id}: {exc!s}')
354344
return None
@@ -648,8 +638,3 @@ def _cache_request(
648638
lock_expires_at=None,
649639
forefront=forefront,
650640
)
651-
652-
async def _update_metadata(self) -> None:
653-
"""Update the request queue metadata with current information."""
654-
metadata = await self._api_client.get()
655-
self._metadata = RequestQueueMetadata.model_validate(metadata)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
from ._storage_client import ApifyFileSystemStorageClient as FileSystemStorageClient
1+
from ._key_value_store_client import ApifyFileSystemKeyValueStoreClient
2+
from ._storage_client import ApifyFileSystemStorageClient

tests/unit/storage_clients/test_file_system.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,25 @@
55
from crawlee._consts import METADATA_FILENAME
66

77
from apify import Configuration
8-
from apify.storage_clients._file_system._key_value_store_client import ApifyFileSystemKeyValueStoreClient
8+
from apify.storage_clients._file_system import ApifyFileSystemKeyValueStoreClient
99

1010

1111
async def test_purge_preserves_input_file_and_metadata() -> None:
1212
"""Test that purge() preserves INPUT.json and metadata files but removes other files."""
1313
# Get the global configuration (storage directory is set by test fixtures)
14-
config = Configuration.get_global_configuration()
14+
configuration = Configuration.get_global_configuration()
1515

16-
# Create the key-value store client
17-
kvs_client = await ApifyFileSystemKeyValueStoreClient.open(
16+
kvs_storage_client = await ApifyFileSystemKeyValueStoreClient.open(
1817
id=None,
1918
name='test-kvs',
20-
configuration=config,
19+
configuration=configuration,
2120
)
2221

2322
# Create some test files in the KVS directory
24-
kvs_path = kvs_client.path_to_kvs
23+
kvs_path = kvs_storage_client.path_to_kvs
2524

2625
# Create various files
27-
kvs_input_filename = f'{config.input_key}.json'
28-
input_file = kvs_path / kvs_input_filename
26+
input_file = kvs_path / f'{configuration.input_key}.json'
2927
metadata_file = kvs_path / METADATA_FILENAME
3028
regular_file1 = kvs_path / 'regular_file1.json'
3129
regular_file2 = kvs_path / 'another_file.txt'
@@ -42,8 +40,10 @@ async def test_purge_preserves_input_file_and_metadata() -> None:
4240
assert regular_file2.exists()
4341

4442
# Purge the key-value store
45-
await kvs_client.purge() # Verify INPUT.json and metadata are preserved
46-
assert input_file.exists(), f'{kvs_input_filename} should be preserved during purge'
43+
await kvs_storage_client.purge()
44+
45+
# Verify INPUT.json and metadata are preserved
46+
assert input_file.exists(), f'{configuration.input_key} should be preserved during purge'
4747
assert metadata_file.exists(), f'{METADATA_FILENAME} should be preserved during purge'
4848

4949
# Verify other files are deleted

0 commit comments

Comments
 (0)