@@ -283,28 +283,22 @@ int32_t GraphBrpcService::graph_random_sample(Table *table,
283283 " graph_random_sample request requires at least 2 arguments" );
284284 return 0 ;
285285 }
286- size_t num_nodes = request.params (0 ).size () / sizeof (uint64_t );
286+ size_t node_num = request.params (0 ).size () / sizeof (uint64_t );
287287 uint64_t *node_data = (uint64_t *)(request.params (0 ).c_str ());
288288 int sample_size = *(uint64_t *)(request.params (1 ).c_str ());
289289
290- std::vector<std::future< int > *> tasks ;
291- std::vector<char *> buffers (num_nodes );
292- std::vector< int > actual_sizes (num_nodes );
290+ std::vector<char *> buffers (node_num, nullptr ) ;
291+ std::vector<int > actual_sizes (node_num, 0 );
292+ table-> random_sample (node_data, sample_size, buffers, actual_sizes);
293293
294- for (size_t idx = 0 ; idx < num_nodes; ++idx){
295- // std::future<int> task = table->random_sample(node_data[idx], sample_size,
296- // buffers[idx], actual_sizes[idx]);
297- table->random_sample (node_data[idx], sample_size,
298- buffers[idx], actual_sizes[idx]);
299- // tasks.push_back(&task);
300- }
301- // for (size_t idx = 0; idx < num_nodes; ++idx){
302- // tasks[idx]->get();
303- // }
304- cntl->response_attachment ().append (&num_nodes, sizeof (size_t ));
305- cntl->response_attachment ().append (actual_sizes.data (), sizeof (int )*num_nodes);
306- for (size_t idx = 0 ; idx < num_nodes; ++idx){
294+ cntl->response_attachment ().append (&node_num, sizeof (size_t ));
295+ cntl->response_attachment ().append (actual_sizes.data (), sizeof (int )*node_num);
296+ for (size_t idx = 0 ; idx < node_num; ++idx){
307297 cntl->response_attachment ().append (buffers[idx], actual_sizes[idx]);
298+ if (buffers[idx] != nullptr ){
299+ delete buffers[idx];
300+ buffers[idx] = nullptr ;
301+ }
308302 }
309303 return 0 ;
310304}
0 commit comments