static void _mapcache_cache_riak_delete(mapcache_context *ctx, mapcache_cache *pcache, mapcache_tile *tile) { int error; RIACK_STRING key; struct RIACK_CLIENT *client; struct RIACK_DEL_PROPERTIES properties; mapcache_pooled_connection *pc; mapcache_cache_riak *cache = (mapcache_cache_riak*)pcache; memset(&properties, 0, sizeof(struct RIACK_DEL_PROPERTIES)); key.value = mapcache_util_get_tile_key(ctx, tile, NULL, " \r\n\t\f\e\a\b", "#"); GC_CHECK_ERROR(ctx); key.len = strlen(key.value); pc = _riak_get_connection(ctx, cache, tile); GC_CHECK_ERROR(ctx); client = pc->connection; properties.rw_use = 1; properties.rw = (4294967295 - 3); // Special value meaning "ALL" error = riack_delete(client, cache->bucket, key, &properties); mapcache_connection_pool_release_connection(ctx,pc); if (error != RIACK_SUCCESS) { ctx->set_error(ctx, 500, "riak: failed to delete key %s: %d", key, error); } }
int main(int argc, char * argv[]) { int opt; unsigned int bucket; char * host = "10.100.2.1"; int port = 8087; int i; riack_client * riack_client; riack_string key, bucket_str; struct keys * keys; while(1) { opt = getopt_long(argc, argv, "b:", longopts, 0); if(opt == EOF) break; switch(opt) { case 'b': bucket = (unsigned int)strtol(optarg, NULL, 10); break; } } riack_init(); riack_client = riack_new_client(0); if(riack_connect(riack_client, host, port, 0) != RIACK_SUCCESS) { // give up exit(0); } keys = db_list_keys(riack_client, bucket, false); for(i = 0; i < keys->num_keys; i++) { key.value = calloc(ID_SIZE, sizeof(char)); bucket_str.value = calloc(ID_SIZE, sizeof(char)); sprintf(bucket_str.value, "%d", bucket); bucket_str.len = strlen(bucket_str.value); sprintf(key.value, "%s", keys->key_str_ptrs[i]); key.len = strlen(key.value); // delete the object from riack database if(riack_delete(riack_client, &bucket_str, &key, 0) == RIACK_SUCCESS) { } free(key.value); free(bucket_str.value); } }