Skip to content

symfonic.capabilities.memory.mongo_native_write_port

mongo_native_write_port

Private, one-shot native Mongo selected WRITE bound to a durable invocation owner.

native_write_port_for

native_write_port_for(graph: Any, vector: Any, journal: Any, scope: MemoryScope) -> _NativeSelectedWritePort

Issue only for the exact native pair, journal topology, and v1 owner.

Source code in src/symfonic/capabilities/memory/mongo_native_write_port.py
def native_write_port_for(
    graph: Any,
    vector: Any,
    journal: Any,
    scope: MemoryScope,
) -> _NativeSelectedWritePort:
    """Issue only for the exact native pair, journal topology, and v1 owner."""
    from symfonic.memory.backends.mongo_native_read import _owned_pair
    from symfonic.memory.backends.mongo_operation_journal import MongoOperationJournal

    try:
        domain = _owned_pair(graph, vector)
        if (
            type(journal) is not MongoOperationJournal
            or journal._closed
            or journal._uncertain
            or type(scope) is not MemoryScope
            or scope.identity_version != 1
            or domain._receipt_database != journal._database
        ):
            raise ConfigurationError("native selected WRITE requires exact owned pair")
        left = domain._client.delegate._topology_settings
        right = journal._client.delegate._topology_settings
        if (
            left.replica_set_name is None
            or left.seeds != right.seeds
            or left.replica_set_name != right.replica_set_name
        ):
            raise ConfigurationError("native selected WRITE topology mismatch")
    except (AttributeError, TypeError) as exc:
        raise ConfigurationError("native selected WRITE composition refused") from exc
    return _NativeSelectedWritePort(domain, journal, scope)