assemblyline-core 4.4.1.dev370__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.

Files changed (84) hide show
  1. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/PKG-INFO +1 -1
  2. assemblyline-core-4.4.1.dev371/assemblyline_core/VERSION +1 -0
  3. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/tasking_client.py +11 -4
  4. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/PKG-INFO +1 -1
  5. assemblyline-core-4.4.1.dev370/assemblyline_core/VERSION +0 -1
  6. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/LICENCE.md +0 -0
  7. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/README.md +0 -0
  8. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/__init__.py +0 -0
  9. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/alerter/__init__.py +0 -0
  10. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/alerter/processing.py +0 -0
  11. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/alerter/run_alerter.py +0 -0
  12. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/archiver/__init__.py +0 -0
  13. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/archiver/run_archiver.py +0 -0
  14. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/badlist_client.py +0 -0
  15. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/__init__.py +0 -0
  16. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/__main__.py +0 -0
  17. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/client.py +0 -0
  18. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/dispatcher.py +0 -0
  19. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/schedules.py +0 -0
  20. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/dispatching/timeout.py +0 -0
  21. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/expiry/__init__.py +0 -0
  22. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/expiry/run_expiry.py +0 -0
  23. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/__init__.py +0 -0
  24. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/__main__.py +0 -0
  25. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/constants.py +0 -0
  26. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/ingester/ingester.py +0 -0
  27. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/__init__.py +0 -0
  28. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/es_metrics.py +0 -0
  29. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  30. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/helper.py +0 -0
  31. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/metrics_server.py +0 -0
  32. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  33. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  34. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  35. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/plumber/__init__.py +0 -0
  36. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/plumber/run_plumber.py +0 -0
  37. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/__init__.py +0 -0
  38. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/client.py +0 -0
  39. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/creator/__init__.py +0 -0
  40. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/creator/run.py +0 -0
  41. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/creator/run_worker.py +0 -0
  42. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/loader/__init__.py +0 -0
  43. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/loader/run.py +0 -0
  44. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/loader/run_worker.py +0 -0
  45. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/replay/replay.py +0 -0
  46. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/safelist_client.py +0 -0
  47. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/__init__.py +0 -0
  48. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/collection.py +0 -0
  49. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  50. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  51. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/interface.py +0 -0
  52. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  53. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/run_scaler.py +0 -0
  54. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/scaler/scaler_server.py +0 -0
  55. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/server_base.py +0 -0
  56. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/submission_client.py +0 -0
  57. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/updater/__init__.py +0 -0
  58. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/updater/helper.py +0 -0
  59. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/updater/run_updater.py +0 -0
  60. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/__init__.py +0 -0
  61. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/crawler.py +0 -0
  62. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/department_map.py +0 -0
  63. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/safelist.py +0 -0
  64. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/stream_map.py +0 -0
  65. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/vacuum/worker.py +0 -0
  66. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/workflow/__init__.py +0 -0
  67. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core/workflow/run_workflow.py +0 -0
  68. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  69. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  70. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/requires.txt +0 -0
  71. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/assemblyline_core.egg-info/top_level.txt +0 -0
  72. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/setup.cfg +0 -0
  73. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/setup.py +0 -0
  74. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_alerter.py +0 -0
  75. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_dispatcher.py +0 -0
  76. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_expiry.py +0 -0
  77. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_plumber.py +0 -0
  78. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_replay.py +0 -0
  79. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_scaler.py +0 -0
  80. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_scheduler.py +0 -0
  81. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_simulation.py +0 -0
  82. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_vacuum.py +0 -0
  83. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_worker_ingest.py +0 -0
  84. {assemblyline-core-4.4.1.dev370 → assemblyline-core-4.4.1.dev371}/test/test_worker_submit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.4.1.dev370
3
+ Version: 4.4.1.dev371
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -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 self.filestore.exists(item['sha256']):
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 concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.4.1.dev370
3
+ Version: 4.4.1.dev371
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -1 +0,0 @@
1
- 4.4.1.dev370