- c_avl_iterator_t *iter;
- redis_node_t *rn;
-
- status = -1;
- if ( (iter = c_avl_get_iterator (redis_tree)) == NULL )
- {
- ERROR ("redis plugin: unable to iterate redis tree.");
- return (-1);
- }
-
- while (c_avl_iterator_next (iter, (void *) &key, (void *) &rn) == 0)
- {
- DEBUG ("redis plugin: querying info from node `%s'.", rn->name);
-
- if ( (rh = credis_connect (rn->host, rn->port, rn->timeout)) == NULL )
- {
- ERROR ("redis plugin: unable to connect to node `%s' (%s:%d).", rn->name, rn->host, rn->port);
- status = -1;
- break;
- }
-
- if ( (status = credis_info (rh, &info)) == -1 )
- {
- WARNING ("redis plugin: unable to get info from node `%s'.", rn->name);
- credis_close (rh);
- break;
- }
-
- /* typedef struct _cr_info {
- * char redis_version[CREDIS_VERSION_STRING_SIZE];
- * int bgsave_in_progress;
- * int connected_clients;
- * int connected_slaves;
- * unsigned int used_memory;
- * long long changes_since_last_save;
- * int last_save_time;
- * long long total_connections_received;
- * long long total_commands_processed;
- * int uptime_in_seconds;
- * int uptime_in_days;
- * int role;
- * } REDIS_INFO; */
-
- DEBUG ("redis plugin: received info from node `%s': connected_clients = %d; "
- "connected_slaves = %d; used_memory = %lu; changes_since_last_save = %lld; "
- "bgsave_in_progress = %d; total_connections_received = %lld; "
- "total_commands_processed = %lld; uptime_in_seconds = %ld", rn->name,
- info.connected_clients, info.connected_slaves, info.used_memory,
- info.changes_since_last_save, info.bgsave_in_progress,
- info.total_connections_received, info.total_commands_processed,
- info.uptime_in_seconds);
-
- redis_submit_g (rn->name, "connected_clients", NULL, info.connected_clients);
- redis_submit_g (rn->name, "connected_slaves", NULL, info.connected_slaves);
- redis_submit_g (rn->name, "used_memory", NULL, info.used_memory);
- redis_submit_g (rn->name, "changes_since_last_save", NULL, info.changes_since_last_save);
- redis_submit_g (rn->name, "bgsave_in_progress", NULL, info.bgsave_in_progress);
- redis_submit_c (rn->name, "total_connections_received", NULL, info.total_connections_received);
- redis_submit_c (rn->name, "total_commands_processed", NULL, info.total_commands_processed);
- redis_submit_c (rn->name, "uptime_in_seconds", NULL, info.uptime_in_seconds);
-
- credis_close (rh);
- status = 0;
- }
-
- c_avl_iterator_destroy(iter);
- if ( status != 0 )
- {
- return (-1);
- }
-
- return 0;
+
+ DEBUG ("redis plugin: querying info from node `%s' (%s:%d).", rn->name, rn->host, rn->port);
+
+ rh = credis_connect (rn->host, rn->port, rn->timeout);
+ if (rh == NULL)
+ {
+ ERROR ("redis plugin: unable to connect to node `%s' (%s:%d).", rn->name, rn->host, rn->port);
+ continue;
+ }
+
+ memset (&info, 0, sizeof (info));
+ status = credis_info (rh, &info);
+ if (status != 0)
+ {
+ WARNING ("redis plugin: unable to get info from node `%s'.", rn->name);
+ credis_close (rh);
+ continue;
+ }
+
+ /* typedef struct _cr_info {
+ * char redis_version[CREDIS_VERSION_STRING_SIZE];
+ * int bgsave_in_progress;
+ * int connected_clients;
+ * int connected_slaves;
+ * unsigned int used_memory;
+ * long long changes_since_last_save;
+ * int last_save_time;
+ * long long total_connections_received;
+ * long long total_commands_processed;
+ * int uptime_in_seconds;
+ * int uptime_in_days;
+ * int role;
+ * } REDIS_INFO; */
+
+ DEBUG ("redis plugin: received info from node `%s': connected_clients = %d; "
+ "connected_slaves = %d; used_memory = %lu; changes_since_last_save = %lld; "
+ "bgsave_in_progress = %d; total_connections_received = %lld; "
+ "total_commands_processed = %lld; uptime_in_seconds = %ld", rn->name,
+ info.connected_clients, info.connected_slaves, info.used_memory,
+ info.changes_since_last_save, info.bgsave_in_progress,
+ info.total_connections_received, info.total_commands_processed,
+ info.uptime_in_seconds);
+
+ redis_submit_g (rn->name, "current_connections", "clients", info.connected_clients);
+ redis_submit_g (rn->name, "current_connections", "slaves", info.connected_slaves);
+ redis_submit_g (rn->name, "memory", "used", info.used_memory);
+ redis_submit_g (rn->name, "volatile_changes", NULL, info.changes_since_last_save);
+ redis_submit_d (rn->name, "total_connections", NULL, info.total_connections_received);
+ redis_submit_d (rn->name, "total_operations", NULL, info.total_commands_processed);
+
+ credis_close (rh);
+ }
+
+ return 0;