From db175cb825b3286d11895aff76d24a19167fbf39 Mon Sep 17 00:00:00 2001 From: wuweikang Date: Mon, 26 Apr 2021 20:38:45 +0800 Subject: [PATCH] fix AddGraph and AddGraphWithCopy --- ge/graph/manager/graph_manager.cc | 9 +++++- .../graph/manager/graph_manager_unittest.cc | 31 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/ge/graph/manager/graph_manager.cc b/ge/graph/manager/graph_manager.cc index a1a7034b..79cf7627 100755 --- a/ge/graph/manager/graph_manager.cc +++ b/ge/graph/manager/graph_manager.cc @@ -492,9 +492,12 @@ Status GraphManager::AddGraph(const GraphId &graph_id, const Graph &graph, } // Do add graph SetAddGraphCondition(graph_id, kStartAdd); + if (CheckGraphAdded(graph_id, graph) != SUCCESS) { + GELOGE(FAILED, "AddGraph failed."); + return FAILED; + } auto compute_graph = GraphUtils::GetComputeGraph(graph); GE_CHECK_NOTNULL(compute_graph); - compute_graph->SetGraphID(graph_id); (void)AttrUtils::SetBool(*compute_graph, ATTR_NAME_GRAPH_HAS_BEEN_ADDED, true); SetSessionGraphId(compute_graph, graph_id); @@ -552,6 +555,10 @@ Status GraphManager::CheckGraphAdded(const GraphId &graph_id, const Graph &graph Status GraphManager::AddGraphWithCopy(const GraphId &graph_id, const Graph &graph, const std::map &options, const OmgContext &omg_context) { + if (HasGraphNode(graph_id)) { + GELOGE(GE_GRAPH_GRAPH_ALREADY_EXIST, "[GraphManager] graph exists, graph_id = %u", graph_id); + return GE_GRAPH_GRAPH_ALREADY_EXIST; + } if (CheckGraphAdded(graph_id, graph) != SUCCESS) { GELOGE(FAILED, "AddGraphWithCopy failed."); return FAILED; diff --git a/tests/ut/ge/graph/manager/graph_manager_unittest.cc b/tests/ut/ge/graph/manager/graph_manager_unittest.cc index 79beb02d..b61cb524 100644 --- a/tests/ut/ge/graph/manager/graph_manager_unittest.cc +++ b/tests/ut/ge/graph/manager/graph_manager_unittest.cc @@ -206,6 +206,37 @@ TEST_F(UtestGraphManagerTest, test_add_graph_3) { EXPECT_EQ(status2, ge::SUCCESS); } +TEST_F(UtestGraphManagerTest, test_add_graph_4) { + GraphId graph_id = 1; + GraphManager graph_manager; + // create graph + Graph graph("test_graph"); + CreateGraph(graph); + auto compute_graph = GraphUtils::GetComputeGraph(graph); + (void)AttrUtils::SetBool(*compute_graph, ATTR_NAME_GRAPH_HAS_BEEN_ADDED, true); + + std::map options; + OmgContext context; + Status status = graph_manager.AddGraph(graph_id, graph, options, context); + EXPECT_NE(status, ge::SUCCESS); +} + +TEST_F(UtestGraphManagerTest, test_add_graph_with_copy_1) { + GraphId graph_id = 1; + GraphManager graph_manager; + + // create graph + Graph graph("test_graph"); + CreateGraph(graph); + GraphNodePtr graph_node = MakeShared(graph_id); + graph_manager.graph_map_.insert({1, graph_node}); + + std::map options; + OmgContext context; + Status status = graph_manager.AddGraphWithCopy(graph_id, graph, options, context); + EXPECT_NE(status, ge::SUCCESS); +} + TEST_F(UtestGraphManagerTest, test_remove_graph_1) { GraphId graph_id = 1; GraphManager graph_manager;