assemblyline-core 4.4.1.dev368__tar.gz → 4.4.1.dev371__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.
Potentially problematic release.
This version of assemblyline-core might be problematic. Click here for more details.
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/PKG-INFO +1 -1
- assemblyline-core-4.4.1.dev371/assemblyline_core/VERSION +1 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/tasking_client.py +11 -4
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/PKG-INFO +1 -1
- assemblyline-core-4.4.1.dev368/assemblyline_core/VERSION +0 -1
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/LICENCE.md +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/README.md +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/__main__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/timeout.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/__main__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/plumber/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/plumber/run_plumber.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/client.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/server_base.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/submission_client.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/setup.cfg +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/setup.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_alerter.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_dispatcher.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_expiry.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_plumber.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_replay.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_scaler.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_scheduler.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_simulation.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_vacuum.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_worker_ingest.py +0 -0
- {assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_worker_submit.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.4.1.dev371
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import concurrent.futures
|
|
2
1
|
import logging
|
|
3
2
|
import time
|
|
4
3
|
from typing import Any, Dict, Optional
|
|
@@ -10,6 +9,7 @@ from assemblyline.common.constants import SERVICE_STATE_HASH, ServiceStatus
|
|
|
10
9
|
from assemblyline.common.dict_utils import flatten, unflatten
|
|
11
10
|
from assemblyline.common.heuristics import HeuristicHandler, InvalidHeuristicException
|
|
12
11
|
from assemblyline.common.isotime import now_as_iso
|
|
12
|
+
from assemblyline.common.threading import APMAwareThreadPoolExecutor
|
|
13
13
|
from assemblyline.datastore.helper import AssemblylineDatastore
|
|
14
14
|
from assemblyline.filestore import FileStore
|
|
15
15
|
from assemblyline.odm import construct_safe
|
|
@@ -24,7 +24,6 @@ from assemblyline.remote.datatypes.events import EventSender, EventWatcher
|
|
|
24
24
|
from assemblyline.remote.datatypes.hash import ExpiringHash
|
|
25
25
|
from assemblyline_core.dispatching.client import DispatchClient
|
|
26
26
|
|
|
27
|
-
|
|
28
27
|
class TaskingClientException(Exception):
|
|
29
28
|
pass
|
|
30
29
|
|
|
@@ -263,6 +262,10 @@ class TaskingClient:
|
|
|
263
262
|
|
|
264
263
|
# Test each extracted and supplementary files
|
|
265
264
|
for file_item in result.response.extracted + result.response.supplementary:
|
|
265
|
+
if file_item.sha256 in freshen_hashes:
|
|
266
|
+
# We've already decided to freshen this file, moving on..
|
|
267
|
+
continue
|
|
268
|
+
|
|
266
269
|
freshen_hashes.append(file_item.sha256)
|
|
267
270
|
|
|
268
271
|
# Bail out if file does not exists
|
|
@@ -333,10 +336,12 @@ class TaskingClient:
|
|
|
333
336
|
@elasticapm.capture_span(span_type='tasking_client')
|
|
334
337
|
def _handle_task_result(self, exec_time: int, task: ServiceTask, result: Dict[str, Any], client_id, service_name,
|
|
335
338
|
freshen: bool, metric_factory):
|
|
339
|
+
# In the event of a result with duplicate files, let's cache file existence checks with the filestore
|
|
340
|
+
file_exists_check = {}
|
|
336
341
|
|
|
337
342
|
def freshen_file(file_info_list, item):
|
|
338
343
|
file_info = file_info_list.get(item['sha256'], None)
|
|
339
|
-
if file_info is None or not
|
|
344
|
+
if file_info is None or not file_exists_check[item['sha256']]:
|
|
340
345
|
return True
|
|
341
346
|
else:
|
|
342
347
|
file_info['archive_ts'] = None
|
|
@@ -357,11 +362,13 @@ class TaskingClient:
|
|
|
357
362
|
missing_files = []
|
|
358
363
|
hashes = list(set([f['sha256']
|
|
359
364
|
for f in result['response']['extracted'] + result['response']['supplementary']]))
|
|
365
|
+
# Pre-compute file existence checks before freshening files
|
|
366
|
+
file_exists_check = {h: self.filestore.exists(h) for h in hashes}
|
|
360
367
|
file_infos = self.datastore.file.multiget(hashes, as_obj=False, error_on_missing=False)
|
|
361
368
|
|
|
362
369
|
with elasticapm.capture_span(name="handle_task_result.freshen_files",
|
|
363
370
|
span_type="tasking_client"):
|
|
364
|
-
with
|
|
371
|
+
with APMAwareThreadPoolExecutor(max_workers=5) as executor:
|
|
365
372
|
res = {
|
|
366
373
|
f['sha256']: executor.submit(freshen_file, file_infos, f)
|
|
367
374
|
for f in result['response']['extracted'] + result['response']['supplementary']}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.4.1.dev368
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/__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
|
|
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
|
|
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.4.1.dev368 → assemblyline-core-4.4.1.dev371}/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.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/replay.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
|
{assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/assemblyline_core/server_base.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
|
{assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_worker_ingest.py
RENAMED
|
File without changes
|
{assemblyline-core-4.4.1.dev368 → assemblyline-core-4.4.1.dev371}/test/test_worker_submit.py
RENAMED
|
File without changes
|