cve-search / CVE-Search-Docker

Docker Image for CVE-Search
GNU General Public License v3.0
96 stars 34 forks source link

cve-search exited with code 1 #38

Closed thireo closed 1 year ago

thireo commented 1 year ago

Describe the bug CVE-Search module exits with code 1, due to a FileNotFoundError. The following message is spammed in the log, while CVE-Search is starting.

cve_search_1  | Traceback (most recent call last):
cve_search_1  |   File "/app/web/index.py", line 13, in <module>
cve_search_1  |     from web.run import create_app
cve_search_1  |   File "/app/web/../web/run.py", line 6, in <module>
cve_search_1  |     from CveXplore import CveXplore
cve_search_1  |   File "/usr/local/lib/python3.10/site-packages/CveXplore/__init__.py", line 1, in <module>
cve_search_1  |     from CveXplore.main import CveXplore
cve_search_1  |   File "/usr/local/lib/python3.10/site-packages/CveXplore/main.py", line 18, in <module>
cve_search_1  |     from CveXplore.database.maintenance.main_updater import MainUpdater
cve_search_1  |   File "/usr/local/lib/python3.10/site-packages/CveXplore/database/maintenance/main_updater.py", line 9, in <module>
cve_search_1  |     from CveXplore.database.maintenance.LogHandler import UpdateHandler
cve_search_1  |   File "/usr/local/lib/python3.10/site-packages/CveXplore/database/maintenance/LogHandler.py", line 12, in <module>
cve_search_1  |     from CveXplore.common.config import Configuration
cve_search_1  |   File "/usr/local/lib/python3.10/site-packages/CveXplore/common/config.py", line 21, in <module>
cve_search_1  |     shutil.copyfile(
cve_search_1  |   File "/usr/local/lib/python3.10/shutil.py", line 254, in copyfile
cve_search_1  |     with open(src, 'rb') as fsrc:
cve_search_1  | FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.10/site-packages/CveXplore/common/.env_example'

To Reproduce Steps to reproduce the behavior:

  1. Clone CVE-Search-Docker
  2. Run 'docker-compose up -d'
  3. cve-search keeps restarting/failing to start.

"fix" The docker pulls the latest cve-search commit and apparently cve-search broke cve-search-docker some while ago. I have been using cve-search-docker every 4-6 weeks. Some time between last usage it broke. I have narrowed it down to this commit: https://github.com/cve-search/cve-search/commit/a3ed4b8d313cc0fa787e089e75f6e930c831343f

I therefore locally altered the dockerfile-cve_search to use specific commit before the error was introduced:

RUN git clone -b $BRANCH --single-branch https://github.com/$REPO.git ./
RUN git checkout 5b32fca2f1afaf455961b7dacc0a9baed64df62e

and with that "fix" it works as expected.

P-T-I commented 1 year ago

@thireo Yes thank you; I haven't came around at updating the docker version of cve-search; but the update and database structure has some mayor changes in them due to switching to new NIST API sources; I'll try to get it streamlined again woth the latest version of cve-search

P-T-I commented 1 year ago

@thireo Please check if f10de1d closes this issue

P-T-I commented 1 year ago

https://github.com/cve-search/CVE-Search-Docker/commit/f10de1d5549143d43eadbd29cf9f1e328d353810 should also address #26

thireo commented 1 year ago

@thireo Please check if f10de1d closes this issue

It seems to have fixed the error, but a new one popped up instead :smile:

cve-search log:


  File "/app/web/index.py", line 167, in <module>
    app = create_app(__version__, _runPath)
  File "/app/web/../web/run.py", line 73, in create_app
    dbh.init_app(app)
  File "/app/web/../web/helpers/flask_database.py", line 15, in init_app
    app.dbh = DatabaseHandler()
  File "/app/web/../lib/DatabaseHandler.py", line 14, in __init__
    self.dbpluginloader = DatabasePluginLoader()
  File "/app/web/../lib/DatabasePlugins/config.py", line 19, in __init__
    mods = [
  File "/app/web/../lib/DatabasePlugins/config.py", line 20, in <listcomp>
    {plugin: importlib.import_module(f"lib.DatabasePlugins.{plugin}")}
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/app/web/../lib/DatabasePlugins/mongodb.py", line 13, in <module>
    from lib.DatabaseLayer import sanitize
  File "/app/web/../lib/DatabaseLayer.py", line 34, in <module>
    mongo_version = db.command("buildinfo")["versionArray"]
  File "/usr/local/lib/python3.10/site-packages/pymongo/_csot.py", line 108, in csot_wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pymongo/database.py", line 892, in command
    with self.__client._conn_for_reads(read_preference, session) as (
  File "/usr/local/lib/python3.10/site-packages/pymongo/mongo_client.py", line 1340, in _conn_for_reads
    server = self._select_server(read_preference, session)
  File "/usr/local/lib/python3.10/site-packages/pymongo/mongo_client.py", line 1297, in _select_server
    server = topology.select_server(server_selector)
  File "/usr/local/lib/python3.10/site-packages/pymongo/topology.py", line 312, in select_server
    server = self._select_server(selector, server_selection_timeout, address)
  File "/usr/local/lib/python3.10/site-packages/pymongo/topology.py", line 296, in _select_server
    servers = self.select_servers(selector, server_selection_timeout, address)
  File "/usr/local/lib/python3.10/site-packages/pymongo/topology.py", line 247, in select_servers
    server_descriptions = self._select_servers_loop(selector, server_timeout, address)
  File "/usr/local/lib/python3.10/site-packages/pymongo/topology.py", line 269, in _select_servers_loop
    raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: mongo:27017: [Errno -2] Name or service not known, Timeout: 30s, Topology Description: <TopologyDescription id: 654d2a74baef4946a7801a54, topology_type: Unknown, servers: [<ServerDescription ('mongo', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('mongo:27017: [Errno -2] Name or service not known')>]>```

Log from mongo:
```{"t":{"$date":"2023-11-09T18:55:33.478+00:00"},"s":"I",  "c":"NETWORK",  "id":4915701, "ctx":"main","msg":"Initialized wire specification","attr":{"spec":{"incomingExternalClient":{"minWireVersion":0,"maxWireVersion":17},"incomingInternalClient":{"minWireVersion":0,"maxWireVersion":17},"outgoing":{"minWireVersion":6,"maxWireVersion":17},"isInternalClient":true}}}
{"t":{"$date":"2023-11-09T18:55:33.478+00:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
{"t":{"$date":"2023-11-09T18:55:33.478+00:00"},"s":"I",  "c":"NETWORK",  "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationDonorService","namespace":"config.tenantMigrationDonors"}}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationRecipientService","namespace":"config.tenantMigrationRecipients"}}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"ShardSplitDonorService","namespace":"config.tenantSplitDonors"}}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"CONTROL",  "id":5945603, "ctx":"main","msg":"Multi threading initialized"}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"CONTROL",  "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":1,"port":27017,"dbPath":"/data/db","architecture":"64-bit","host":"mongo"}}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"CONTROL",  "id":23403,   "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"version":"6.0.11","gitVersion":"f797f841eaf1759c770271ae00c88b92b2766eed","openSSLVersion":"OpenSSL 3.0.2 15 Mar 2022","modules":[],"allocator":"tcmalloc","environment":{"distmod":"ubuntu2204","distarch":"x86_64","target_arch":"x86_64"}}}}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"CONTROL",  "id":51765,   "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name":"Ubuntu","version":"22.04"}}}
{"t":{"$date":"2023-11-09T18:55:33.479+00:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"net":{"bindIp":"*"}}}}
{"t":{"$date":"2023-11-09T18:55:33.480+00:00"},"s":"I",  "c":"STORAGE",  "id":22270,   "ctx":"initandlisten","msg":"Storage engine to use detected by data files","attr":{"dbpath":"/data/db","storageEngine":"wiredTiger"}}
{"t":{"$date":"2023-11-09T18:55:33.480+00:00"},"s":"I",  "c":"STORAGE",  "id":22297,   "ctx":"initandlisten","msg":"Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem","tags":["startupWarnings"]}
{"t":{"$date":"2023-11-09T18:55:33.480+00:00"},"s":"I",  "c":"STORAGE",  "id":22315,   "ctx":"initandlisten","msg":"Opening WiredTiger","attr":{"config":"create,cache_size=31497M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,remove=true,path=journal,compressor=snappy),builtin_extension_config=(zstd=(compression_level=6)),file_manager=(close_idle_time=600,close_scan_interval=10,close_handle_minimum=2000),statistics_log=(wait=0),json_output=(error,message),verbose=[recovery_progress:1,checkpoint_progress:1,compact_progress:1,backup:0,checkpoint:0,compact:0,evict:0,history_store:0,recovery:0,rts:0,salvage:0,tiered:0,timestamp:0,transaction:0,verify:0,log:0],"}}
{"t":{"$date":"2023-11-09T18:55:34.334+00:00"},"s":"I",  "c":"STORAGE",  "id":4795906, "ctx":"initandlisten","msg":"WiredTiger opened","attr":{"durationMillis":854}}
{"t":{"$date":"2023-11-09T18:55:34.334+00:00"},"s":"I",  "c":"RECOVERY", "id":23987,   "ctx":"initandlisten","msg":"WiredTiger recoveryTimestamp","attr":{"recoveryTimestamp":{"$timestamp":{"t":0,"i":0}}}}
{"t":{"$date":"2023-11-09T18:55:34.358+00:00"},"s":"W",  "c":"CONTROL",  "id":22120,   "ctx":"initandlisten","msg":"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted","tags":["startupWarnings"]}
{"t":{"$date":"2023-11-09T18:55:34.358+00:00"},"s":"W",  "c":"CONTROL",  "id":5123300, "ctx":"initandlisten","msg":"vm.max_map_count is too low","attr":{"currentValue":65530,"recommendedMinimum":1677720,"maxConns":838860},"tags":["startupWarnings"]}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"F",  "c":"CONTROL",  "id":20573,   "ctx":"initandlisten","msg":"Wrong mongod version","attr":{"error":"UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document (ERROR: Location4926900: Invalid featureCompatibilityVersion document in admin.system.version: { _id: \"featureCompatibilityVersion\", version: \"4.4\" }. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility. :: caused by :: Invalid feature compatibility version value, expected '5.0' or '5.3' or '6.0. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility.). If the current featureCompatibilityVersion is below 5.0, see the documentation on upgrading at https://docs.mongodb.com/master/release-notes/5.0/#upgrade-procedures."}}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"REPL",     "id":4784900, "ctx":"initandlisten","msg":"Stepping down the ReplicationCoordinator for shutdown","attr":{"waitTimeMillis":15000}}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"REPL",     "id":4794602, "ctx":"initandlisten","msg":"Attempting to enter quiesce mode"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"-",        "id":6371601, "ctx":"initandlisten","msg":"Shutting down the FLE Crud thread pool"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"COMMAND",  "id":4784901, "ctx":"initandlisten","msg":"Shutting down the MirrorMaestro"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"SHARDING", "id":4784902, "ctx":"initandlisten","msg":"Shutting down the WaitForMajorityService"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"NETWORK",  "id":20562,   "ctx":"initandlisten","msg":"Shutdown: going to close listening sockets"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"NETWORK",  "id":4784905, "ctx":"initandlisten","msg":"Shutting down the global connection pool"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"CONTROL",  "id":4784906, "ctx":"initandlisten","msg":"Shutting down the FlowControlTicketholder"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"-",        "id":20520,   "ctx":"initandlisten","msg":"Stopping further Flow Control ticket acquisitions."}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"CONTROL",  "id":4784908, "ctx":"initandlisten","msg":"Shutting down the PeriodicThreadToAbortExpiredTransactions"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"REPL",     "id":4784909, "ctx":"initandlisten","msg":"Shutting down the ReplicationCoordinator"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"SHARDING", "id":4784910, "ctx":"initandlisten","msg":"Shutting down the ShardingInitializationMongoD"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"REPL",     "id":4784911, "ctx":"initandlisten","msg":"Enqueuing the ReplicationStateTransitionLock for shutdown"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"-",        "id":4784912, "ctx":"initandlisten","msg":"Killing all operations for shutdown"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"-",        "id":4695300, "ctx":"initandlisten","msg":"Interrupted all currently running operations","attr":{"opsKilled":3}}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"TENANT_M", "id":5093807, "ctx":"initandlisten","msg":"Shutting down all TenantMigrationAccessBlockers on global shutdown"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"COMMAND",  "id":4784913, "ctx":"initandlisten","msg":"Shutting down all open transactions"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"REPL",     "id":4784914, "ctx":"initandlisten","msg":"Acquiring the ReplicationStateTransitionLock for shutdown"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"INDEX",    "id":4784915, "ctx":"initandlisten","msg":"Shutting down the IndexBuildsCoordinator"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"NETWORK",  "id":4784918, "ctx":"initandlisten","msg":"Shutting down the ReplicaSetMonitor"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"SHARDING", "id":4784921, "ctx":"initandlisten","msg":"Shutting down the MigrationUtilExecutor"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"ASIO",     "id":22582,   "ctx":"MigrationUtil-TaskExecutor","msg":"Killing all outstanding egress activity."}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"COMMAND",  "id":4784923, "ctx":"initandlisten","msg":"Shutting down the ServiceEntryPoint"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"CONTROL",  "id":4784928, "ctx":"initandlisten","msg":"Shutting down the TTL monitor"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"CONTROL",  "id":6278511, "ctx":"initandlisten","msg":"Shutting down the Change Stream Expired Pre-images Remover"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"CONTROL",  "id":4784929, "ctx":"initandlisten","msg":"Acquiring the global lock for shutdown"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"CONTROL",  "id":4784930, "ctx":"initandlisten","msg":"Shutting down the storage engine"}
{"t":{"$date":"2023-11-09T18:55:34.360+00:00"},"s":"I",  "c":"STORAGE",  "id":22320,   "ctx":"initandlisten","msg":"Shutting down journal flusher thread"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":22321,   "ctx":"initandlisten","msg":"Finished shutting down journal flusher thread"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":22322,   "ctx":"initandlisten","msg":"Shutting down checkpoint thread"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":22323,   "ctx":"initandlisten","msg":"Finished shutting down checkpoint thread"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":20282,   "ctx":"initandlisten","msg":"Deregistering all the collections"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":22317,   "ctx":"initandlisten","msg":"WiredTigerKVEngine shutting down"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":22318,   "ctx":"initandlisten","msg":"Shutting down session sweeper thread"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":22319,   "ctx":"initandlisten","msg":"Finished shutting down session sweeper thread"}
{"t":{"$date":"2023-11-09T18:55:34.361+00:00"},"s":"I",  "c":"STORAGE",  "id":4795902, "ctx":"initandlisten","msg":"Closing WiredTiger","attr":{"closeConfig":"leak_memory=true,"}}
{"t":{"$date":"2023-11-09T18:55:34.430+00:00"},"s":"I",  "c":"STORAGE",  "id":4795901, "ctx":"initandlisten","msg":"WiredTiger closed","attr":{"durationMillis":69}}
{"t":{"$date":"2023-11-09T18:55:34.430+00:00"},"s":"I",  "c":"STORAGE",  "id":22279,   "ctx":"initandlisten","msg":"shutdown: removing fs lock..."}
{"t":{"$date":"2023-11-09T18:55:34.430+00:00"},"s":"I",  "c":"-",        "id":4784931, "ctx":"initandlisten","msg":"Dropping the scope cache for shutdown"}
{"t":{"$date":"2023-11-09T18:55:34.430+00:00"},"s":"I",  "c":"CONTROL",  "id":20565,   "ctx":"initandlisten","msg":"Now exiting"}
{"t":{"$date":"2023-11-09T18:55:34.430+00:00"},"s":"I",  "c":"CONTROL",  "id":23138,   "ctx":"initandlisten","msg":"Shutting down","attr":{"exitCode":62}}```

Do you want me to open a new issue?
P-T-I commented 1 year ago

Wrong mongod version","attr":{"error":"UPGRADE PROBLEM: Please clear the data storage of the mongodb; rebuild, try again please

thireo commented 1 year ago

That did the trick! Thank you :)

P-T-I commented 1 year ago

Awesome!

guillermo726 commented 12 months ago

How to re-populate the mongodb?, I have rebuild cve_search-mongo and in the GUI still seeing the same error "Database schema is not up to date, please repopulate the database!" Also get error 500 when I access to https://IP/admin/

cve_search_1 | 2023-11-24 07:09:04,313 - web.run - ERROR - Exception on /admin/ [GET] cve_search_1 | Traceback (most recent call last): cve_search_1 | File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 2077, in wsgi_app cve_search_1 | response = self.full_dispatch_request() cve_search_1 | File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1525, in full_dispatch_request cve_search_1 | rv = self.handle_user_exception(e) cve_search_1 | File "/usr/local/lib/python3.10/site-packages/flask_restx/api.py", line 672, in error_router cve_search_1 | return original_handler(e) cve_search_1 | File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1523, in full_dispatch_request cve_search_1 | rv = self.dispatch_request() cve_search_1 | File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1509, in dispatch_request cve_search_1 | return self.ensure_sync(self.view_functions[rule.endpoint])(*req.view_args) cve_search_1 | File "/usr/local/lib/python3.10/site-packages/flask_login/utils.py", line 277, in decorated_view cve_search_1 | return current_app.ensure_sync(func)(args, kwargs) cve_search_1 | File "/app/web/../web/admin/views.py", line 61, in admin_home cve_search_1 | adminInfo(), cve_search_1 | File "/app/web/../web/home/utils.py", line 286, in adminInfo cve_search_1 | return {"stats": getDBStats(True), "updateOutput": filterUpdateField(output)} cve_search_1 | File "/app/web/../lib/DatabaseLayer.py", line 531, in getDBStats cve_search_1 | "last_update": getLastModified(key.lower()), cve_search_1 | File "/app/web/../lib/DatabaseLayer.py", line 514, in getLastModified cve_search_1 | return info["last-modified"] if info else None cve_search_1 | KeyError: 'last-modified'

Br