Skip to content

[Bug] GraphSpace, graph and store isolation do not work with HStore in HugeGraph 1.7.0 #3095

Description

@P1ckupschen

Bug Type (问题类型)

logic (逻辑设计问题)

Before submit

  • 我已经确认现有的 IssuesFAQ 中没有相同 / 重复问题 (I have confirmed and searched that there are no similar problems in the historical issue and documents)

Environment (环境信息)

  • Server Version: 1.7.0 (Core 1.7.0, REST API 0.71.0.0, Gremlin 3.5.1)
  • Backend: HStore, one PD + one Store + one Server
  • Docker images: hugegraph/server:1.7.0, hugegraph/pd:1.7.0, hugegraph/store:1.7.0
  • Deployment: Docker Compose on a Linux server through 1Panel
  • Authentication: enabled
  • Server config: usePD=true; pd.peers=hugegraph-hstore-pd:8686
  • Graph config: backend=hstore; serializer=binary; task.scheduler_type=distributed
  • Store config: each graph uses a unique store name
  • Data directories: reproduced after rebuilding with completely fresh PD and Store bind directories

Expected & Actual behavior (期望与实际表现)

Description

GraphSpace isolation does not work in this HStore deployment.

Two graphs are created in two different GraphSpaces. The GraphSpace names, graph names, and store names are all different. However, a vertex inserted only into graph A in GraphSpace A can also be queried from graph B in GraphSpace B.

This reproduces through direct HugeGraph REST API calls, without any application code, SDK cache, or reverse proxy. GraphSpace and schema metadata appear separate, but the underlying graph data is shared or reused.

Steps to reproduce

  1. Start Server, PD, and Store with completely fresh data directories.
  2. Confirm that only the DEFAULT GraphSpace exists.
  3. Create two GraphSpaces with auth=true: curl_iso_a_<unique_id> and curl_iso_b_<unique_id>.
  4. Create a different graph and store in each GraphSpace: graph_a_<unique_id> and graph_b_<unique_id>.
  5. Create equivalent property keys and vertex labels in both graphs.
  6. Insert one uniquely named marker vertex only into graph A.
  7. Query all vertices from graph A.
  8. Query all vertices from graph B.

All GraphSpace, graph, store, property-key, label, and marker names are newly generated for every test run.

Expected behavior

Graph A returns the inserted marker. Graph B must return:

{"vertices":[]}

Graphs in different GraphSpaces with different graph and store names must not share data.

Actual behavior

Graph B unexpectedly returns the vertex inserted only into graph A.

A second test used completely new GraphSpace, graph, store, property-key, vertex-label, and marker names. The newly created graph also returned data from the first test run, and the older vertex was exposed using the new schema label.

Therefore, GraphSpace, graph, and store isolation all appear ineffective with HStore 1.7.0. This prevents multi-tenant isolation and can expose one tenant's data to another.

This appears separate from #2912, which addresses an exception during dynamic graph creation.

Vertex/Edge example (问题点 / 边数据举例)

// Inserted only into graph A:
POST /graphspaces/{space_a}/graphs/{graph_a}/graph/vertices

{
  "id": "1:only_a_19077_27057",
  "label": "iso_person_19077_27057"
}

// Query graph A:
GET /graphspaces/{space_a}/graphs/{graph_a}/graph/vertices

{
  "vertices": [
    {
      "id": "1:only_a_19077_27057",
      "label": "iso_person_19077_27057"
    }
  ]
}

// Query graph B (unexpectedly returns graph A data):
GET /graphspaces/{space_b}/graphs/{graph_b}/graph/vertices

{
  "vertices": [
    {
      "id": "1:only_a_19077_27057",
      "label": "iso_person_19077_27057"
    }
  ]
}

// Second run with completely different names:
{
  "vertices": [
    {
      "id": "1:only_a_19077_27057",
      "label": "iso_person_23806_7305"
    },
    {
      "id": "1:only_a_23806_7305",
      "label": "iso_person_23806_7305"
    }
  ]
}

Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions