[sheepdog] [PATCH] fix a bug that read_object() fail in recovery

levin li levin108 at gmail.com
Wed Jun 20 14:09:06 CEST 2012


On 06/20/2012 07:37 PM, Liu Yuan wrote:
> On 06/20/2012 07:09 PM, levin li wrote:
>> +	pthread_mutex_lock(&sys->rw_object_mutex);
>> +	pthread_cond_broadcast(&sys->rw_object_cond);
>> +	pthread_mutex_unlock(&sys->rw_object_mutex);
>> +
> 
> Use condition & mutex is overkill for this corner case and doesn't look
> right to me, since epoch is passed down from callers, this means caller
> asks read_object() to read exact object of the very *epoch*. We should
> honor this semantics or the caller shouldn't pass the epoch down,
> otherwise call should do error handling, not read_object() per se as a
> generic function.
> 
> 
> With further thinking on this problem, I think callers of
> read/write/remove_object() family might not necessarily need 'epoch'
> parameter and would better forward these requests to gateway code, which
> manages retry well in recovery phase.
> 
> Thanks,
> Yuan

Sending a gateway request seems easy to solve this problem, but it takes
an additional connection, if it's ok, I'd like to rewrite this patch.

thanks,

levin



More information about the sheepdog mailing list