void clear(size_t nvertices) { int nblocks = (nvertices - 1) / verticesperblock + 1; for(int i=0; i < nblocks; i++) { std::string bfilename = blockfilename(i); if (file_exists(bfilename)) { remove(bfilename.c_str()); } delete_block_uncompressed_sizefile(bfilename); } }
static void delete_shards(std::string base_filename, int nshards) { #ifdef DYNAMICEDATA typedef int EdgeDataType; #else typedef EdgeDataType_ EdgeDataType; #endif logstream(LOG_DEBUG) << "Deleting files for " << base_filename << " shards=" << nshards << std::endl; std::string intervalfname = filename_intervals(base_filename, nshards); if (file_exists(intervalfname)) { int err = remove(intervalfname.c_str()); if (err != 0) logstream(LOG_ERROR) << "Error removing file " << intervalfname << ", " << strerror(errno) << std::endl; } /* Note: degree file is not removed, because same graph with different number of shards share the file. This should be probably change. std::string degreefname = filename_degree_data(base_filename); if (file_exists(degreefname)) { remove(degreefname.c_str()); } */ size_t blocksize = 4096 * 1024; while (blocksize % sizeof(EdgeDataType) != 0) blocksize++; for(int p=0; p < nshards; p++) { int blockid = 0; std::string filename_edata = filename_shard_edata<EdgeDataType>(base_filename, p, nshards); std::string fsizename = filename_edata + ".size"; if (file_exists(fsizename)) { int err = remove(fsizename.c_str()); if (err != 0) logstream(LOG_ERROR) << "Error removing file " << fsizename << ", " << strerror(errno) << std::endl; } while(true) { std::string block_filename = filename_shard_edata_block(filename_edata, blockid, blocksize); if (file_exists(block_filename)) { int err = remove(block_filename.c_str()); if (err != 0) logstream(LOG_ERROR) << "Error removing file " << block_filename << ", " << strerror(errno) << std::endl; } else { break; } #ifdef DYNAMICEDATA delete_block_uncompressed_sizefile(block_filename); #endif blockid++; } std::string dirname = dirname_shard_edata_block(filename_edata, blocksize); if (file_exists(dirname)) { int err = remove(dirname.c_str()); if (err != 0) logstream(LOG_ERROR) << "Error removing directory " << dirname << ", " << strerror(errno) << std::endl; } std::string adjname = filename_shard_adj(base_filename, p, nshards); logstream(LOG_DEBUG) << "Deleting " << adjname << " exists: " << file_exists(adjname) << std::endl; if (file_exists(adjname)) { int err = remove(adjname.c_str()); if (err != 0) logstream(LOG_ERROR) << "Error removing file " << adjname << ", " << strerror(errno) << std::endl; } } std::string numv_filename = base_filename + ".numvertices"; if (file_exists(numv_filename)) { int err = remove(numv_filename.c_str()); if (err != 0) logstream(LOG_ERROR) << "Error removing file " << numv_filename << ", " << strerror(errno) << std::endl; } /* Degree file */ std::string deg_filename = filename_degree_data(base_filename); if (file_exists(deg_filename)) { int err = remove(deg_filename.c_str()); if (err != 0) logstream(LOG_ERROR) << "Error removing file " << deg_filename << ", " << strerror(errno) << std::endl; } }