[Openais] [PATCH 3/3] STATS: add the service name to the connection name.

Steven Dake sdake at redhat.com
Mon Mar 28 12:15:35 PDT 2011


agree

On 03/28/2011 02:42 AM, Jan Friesse wrote:
> Angus,
> I would rather then switch see statically defined and initialized array. 
> It's shorter, nicer and easier to maintain.
> 
> Honza
> 
> Angus Salkeld napsal(a):
>> This helps to quickly identify what service the application
>> is connected to.
>>
>> The object will now look like:
>> runtime.connections.corosync-objctl:CONFDB:19654:13.service_id=11
>> runtime.connections.corosync-objctl:CONFDB:19654:13.client_pid=19654
>> etc...
>>
>> This also makes it clearer to receivers of the dbus/snmp events
>> what is going on.
>>
>> Signed-off-by: Angus Salkeld <asalkeld at redhat.com>
>> ---
>>  exec/coroipcs.c |  106 +++++++++++++++++++++++++++++++++++++++++++++++++++----
>>  1 files changed, 99 insertions(+), 7 deletions(-)
>>
>> diff --git a/exec/coroipcs.c b/exec/coroipcs.c
>> index b64c5a9..bfb638b 100644
>> --- a/exec/coroipcs.c
>> +++ b/exec/coroipcs.c
>> @@ -70,6 +70,7 @@
>>  #include <sys/shm.h>
>>  
>>  #include <corosync/corotypes.h>
>> +#include <corosync/corodefs.h>
>>  #include <corosync/list.h>
>>  
>>  #include <corosync/coroipc_types.h>
>> @@ -1541,20 +1542,111 @@ static char * pid_to_name (pid_t pid, char *out_name, size_t name_len)
>>  	return out_name;
>>  }
>>  
>> +static const char * short_service_name_get(uint32_t service_id, char *buf)
>> +{
>> +	const char * name;
>> +	switch (service_id) {
>> +	case EVS_SERVICE:
>> +		name = "EVS";
>> +		break;
>> +	case CLM_SERVICE:
>> +		name = "CLM";
>> +		break;
>> +	case AMF_SERVICE:
>> +		name = "AMF";
>> +		break;
>> +	case CKPT_SERVICE:
>> +		name = "CKPT";
>> +		break;
>> +	case EVT_SERVICE:
>> +		name = "EVT";
>> +		break;
>> +	case LCK_SERVICE:
>> +		name = "LCK";
>> +		break;
>> +	case MSG_SERVICE:
>> +		name = "MSG";
>> +		break;
>> +	case CFG_SERVICE:
>> +		name = "CFG";
>> +		break;
>> +	case CPG_SERVICE:
>> +		name = "CPG";
>> +		break;
>> +	case CMAN_SERVICE:
>> +		name = "CMAN";
>> +		break;
>> +	case PCMK_SERVICE:
>> +		name = "PCMK";
>> +		break;
>> +	case CONFDB_SERVICE:
>> +		name = "CONFDB";
>> +		break;
>> +	case QUORUM_SERVICE:
>> +		name = "QUORUM";
>> +		break;
>> +	case PLOAD_SERVICE:
>> +		name = "PLOAD";
>> +		break;
>> +	case TMR_SERVICE:
>> +		name = "TMR";
>> +		break;
>> +	case VOTEQUORUM_SERVICE:
>> +		name = "VOTEQUORUM";
>> +		break;
>> +	case NTF_SERVICE:
>> +		name = "NTF";
>> +		break;
>> +	case AMF_V2_SERVICE:
>> +		name = "AMF";
>> +		break;
>> +	case TST_SV1_SERVICE:
>> +		name = "TST";
>> +		break;
>> +	case TST_SV2_SERVICE:
>> +		name = "TST";
>> +		break;
>> +	case MON_SERVICE:
>> +		name = "MON";
>> +		break;
>> +	case WD_SERVICE:
>> +		name = "WD";
>> +		break;
>> +	default:
>> +		sprintf(buf, "%d", service_id);
>> +		name = buf;
>> +		break;
>> +	}
>> +	return name;
>> +}
>> +
>> +
>>  static void coroipcs_init_conn_stats (
>>  	struct conn_info *conn)
>>  {
>>  	char conn_name[CS_MAX_NAME_LENGTH];
>>  	char proc_name[CS_MAX_NAME_LENGTH];
>> +	char int_str[4];
>>  
>>  	if (conn->client_pid > 0) {
>> -		if (pid_to_name (conn->client_pid, proc_name, sizeof(proc_name)))
>> -			snprintf (conn_name, sizeof(conn_name), "%s:%d:%d", proc_name, conn->client_pid, conn->fd);
>> -		else
>> -			snprintf (conn_name, sizeof(conn_name), "%d:%d", conn->client_pid, conn->fd);
>> -	} else
>> -		snprintf (conn_name, sizeof(conn_name), "%d", conn->fd);
>> -
>> +		if (pid_to_name (conn->client_pid, proc_name, sizeof(proc_name))) {
>> +			snprintf (conn_name, sizeof(conn_name),
>> +				"%s:%s:%d:%d", proc_name,
>> +				short_service_name_get(conn->service, int_str),
>> +				conn->client_pid, conn->fd);
>> +		} else {
>> +			snprintf (conn_name, sizeof(conn_name),
>> +				"proc:%s:%d:%d",
>> +				short_service_name_get(conn->service, int_str),
>> +				conn->client_pid,
>> +				conn->fd);
>> +		}
>> +	} else {
>> +		snprintf (conn_name, sizeof(conn_name),
>> +			"proc:%s:pid:%d",
>> +			short_service_name_get(conn->service, int_str),
>> +			conn->fd);
>> +	}
>>  	conn->stats_handle = api->stats_create_connection (conn_name, conn->client_pid, conn->fd);
>>  	api->stats_update_value (conn->stats_handle, "service_id",
>>  		&conn->service, sizeof(conn->service));
> 
> _______________________________________________
> Openais mailing list
> Openais at lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/openais



More information about the Openais mailing list