assemblyline-core 4.7.5.dev13__tar.gz → 4.7.5.dev16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/PKG-INFO +1 -1
- assemblyline_core-4.7.5.dev16/assemblyline_core/VERSION +1 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/expiry/run_expiry.py +33 -21
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core.egg-info/PKG-INFO +1 -1
- assemblyline_core-4.7.5.dev13/assemblyline_core/VERSION +0 -1
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/LICENCE.md +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/README.md +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/server_base.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/submission_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/setup.cfg +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/setup.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_expiry.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_replay.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_scheduler.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_vacuum.py +0 -0
- {assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_workflow.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.7.5.dev16
|
|
@@ -14,7 +14,7 @@ from datemath import dm
|
|
|
14
14
|
|
|
15
15
|
from assemblyline_core.server_base import ServerBase
|
|
16
16
|
from assemblyline_core.dispatching.dispatcher import BAD_SID_HASH
|
|
17
|
-
from assemblyline.common import forge
|
|
17
|
+
from assemblyline.common import forge, chunk
|
|
18
18
|
from assemblyline.common.isotime import epoch_to_iso, now_as_iso
|
|
19
19
|
from assemblyline.common.metrics import MetricsFactory
|
|
20
20
|
from assemblyline.filestore import FileStore
|
|
@@ -27,7 +27,8 @@ if TYPE_CHECKING:
|
|
|
27
27
|
from assemblyline.datastore.collection import ESCollection
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
def file_delete_worker(logger, filestore_urls, file_batch
|
|
30
|
+
def file_delete_worker(logger, filestore_urls, file_batch: list[tuple[str, bool]],
|
|
31
|
+
archive_filestore_urls=None) -> list[tuple[str, bool]]:
|
|
31
32
|
try:
|
|
32
33
|
filestore = FileStore(*filestore_urls)
|
|
33
34
|
if archive_filestore_urls and filestore_urls != archive_filestore_urls:
|
|
@@ -35,37 +36,48 @@ def file_delete_worker(logger, filestore_urls, file_batch, archive_filestore_url
|
|
|
35
36
|
else:
|
|
36
37
|
archivestore = filestore
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
sha256, from_archive = item
|
|
40
|
-
if from_archive:
|
|
41
|
-
archivestore.delete(sha256)
|
|
42
|
-
if not archivestore.exists(sha256):
|
|
43
|
-
return sha256, True
|
|
44
|
-
else:
|
|
45
|
-
filestore.delete(sha256)
|
|
46
|
-
if not filestore.exists(sha256):
|
|
47
|
-
return sha256, False
|
|
48
|
-
return None, None
|
|
49
|
-
|
|
50
|
-
return _file_delete_worker(logger, filestore_delete, file_batch)
|
|
39
|
+
return _file_delete_worker(logger, filestore, archivestore, file_batch)
|
|
51
40
|
|
|
52
41
|
except Exception as error:
|
|
53
42
|
logger.exception("Error in filestore worker: " + str(error))
|
|
54
43
|
return []
|
|
55
44
|
|
|
56
45
|
|
|
57
|
-
|
|
46
|
+
def _confirm_delete(store, from_archive, sha256: str) -> tuple[Optional[str], Optional[bool]]:
|
|
47
|
+
if not store.exists(sha256):
|
|
48
|
+
return sha256, from_archive
|
|
49
|
+
return None, None
|
|
58
50
|
|
|
59
51
|
|
|
60
|
-
def _file_delete_worker(logger,
|
|
52
|
+
def _file_delete_worker(logger, filestore, archivestore, file_batch: list[tuple[str, bool]]) -> list[tuple[str, bool]]:
|
|
61
53
|
finished_files: list[tuple[str, bool]] = []
|
|
62
54
|
try:
|
|
63
|
-
futures = []
|
|
64
55
|
|
|
65
|
-
with ThreadPoolExecutor(
|
|
66
|
-
|
|
67
|
-
|
|
56
|
+
with ThreadPoolExecutor(16) as pool:
|
|
57
|
+
# Delete the two batches in parallel if needed
|
|
58
|
+
futures: list[Future] = []
|
|
59
|
+
archive_files = [sha256 for sha256, from_archive in file_batch if from_archive]
|
|
60
|
+
hot_files = [sha256 for sha256, from_archive in file_batch if not from_archive]
|
|
61
|
+
futures.extend(
|
|
62
|
+
pool.submit(archivestore.delete_batch, batch)
|
|
63
|
+
for batch in chunk.chunk(archive_files, archivestore.delete_batch_chunk_size())
|
|
64
|
+
)
|
|
65
|
+
futures.extend(
|
|
66
|
+
pool.submit(filestore.delete_batch, batch)
|
|
67
|
+
for batch in chunk.chunk(hot_files, filestore.delete_batch_chunk_size())
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
for future in as_completed(futures):
|
|
71
|
+
try:
|
|
72
|
+
future.result()
|
|
73
|
+
except Exception as error:
|
|
74
|
+
logger.exception("Error in filestore worker: " + str(error))
|
|
68
75
|
|
|
76
|
+
# It is CRITICALLY IMPORTANT that we don't delete the file records
|
|
77
|
+
# for files that do exists, confirm that we have actually deleted files
|
|
78
|
+
# before we procede with removing the datastore records
|
|
79
|
+
futures = [pool.submit(_confirm_delete, filestore, False, filename) for filename in hot_files]
|
|
80
|
+
futures.extend(pool.submit(_confirm_delete, archivestore, True, filename) for filename in archive_files)
|
|
69
81
|
for future in as_completed(futures):
|
|
70
82
|
try:
|
|
71
83
|
erased_name, from_archive = future.result()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.7.5.dev13
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/badlist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/expiry/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/metrics/helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/__init__.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/replay/replay.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/safelist_client.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/scaler/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/server_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/tasking_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/updater/helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/__init__.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/crawler.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/safelist.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/assemblyline_core/vacuum/worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_safelist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev13 → assemblyline_core-4.7.5.dev16}/test/test_signature_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|