graphsense-lib 2.13.1
[2.13.1] - Unreleased
Library (v2.13.1)
Changed
- MCP:
labelsremoved from the top level of every address, cluster, and neighbor response. The upstream REST surface attaches a quick-aggregatelabelsfield alongside the structuredtag_summary, which conflicted withtag_summary.labels(the renamedlabel_summary) and caused LLMs to double-count or mis-attribute tags.labelsnow appears in MCP output only insidetag_summary(fromlookup_address/list_tags_by_address). Implemented by extending_LEGACY_ADDRESS_FIELDSand_LEGACY_CLUSTER_FIELDSinsrc/graphsenselib/mcp/tools/consolidated.py; the existing neighbor strip is unchanged.
Fixed
- Tagpack reinsert was slow (~8 s per pack) due to a missing FK index.
tag.tagpack(FK totagpack.idwithON DELETE CASCADE) had no index, so everyDELETE FROM tagpackin the--update/force_insertpath triggered a sequential scan of the entiretagtable to resolve the cascade. On an 80 M-row tag table a single delete spent ~7.9 s inside thetag_tagpack_fkeytrigger; 8 k packs took the better part of a day. Addedindex=TrueonTag.tagpack_idinsrc/graphsenselib/tagstore/db/models.py. Existing deployments must also create the index on the live DB, e.g.CREATE INDEX CONCURRENTLY IF NOT EXISTS tag_tagpack_idx ON tag (tagpack);. TagStoreread-only helpers leaked anidle in transactionconnection for the entire dispatcher run.get_ingested_tagpacks,get_ingested_actorpacks, andget_actor_alias_mappingissued SELECTs through apsycopg2connection withautocommit=Falseand never committed or rolled back, leaving the main process holding a transaction snapshot for hours during a tagpack insert. That pinned the DB-widexminhorizon (blocking autovacuum cleanup on every table) and would have stalledCREATE INDEX CONCURRENTLYindefinitely. Each helper now callsself.conn.rollback()before returning.
Web API + Python client (webapi-2.13.0)
No changes.
Full Changelog: v2.13.0...v2.13.1