git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 1/2] Git.pm: add new temp_is_locked function

From
Kyle J. McKay <mackyle@gmail.com>
Date
Jul 18, 2013, 19:14 UTC
Message-ID
<842D3E63-9E6B-45F0-A7F6-03082C4D067F@gmail.com>
In-Reply-To
<loom.20130718T202918-857@post.gmane.org>
On Jul 18, 2013, at 11:34, David Rothenberger wrote:
Show 44 quoted lines
> Kyle J. McKay <mackyle <at> gmail.com> writes:
>
>> +sub temp_is_locked {
>> +	my ($self, $name) = _maybe_self( <at> _);
>> +	my $temp_fd = \$TEMP_FILEMAP{$name};
>> +
>> +	defined $$temp_fd && $$temp_fd->opened && $TEMP_FILES{$$temp_fd} 
>> {locked};
>> +}
>> +
>> =item temp_release ( NAME )
>>
>> =item temp_release ( FILEHANDLE )
>> <at>  <at>  -1248,7 +1277,7  <at>  <at>  sub _temp_cache {
>>
>> 	my $temp_fd = \$TEMP_FILEMAP{$name};
>> 	if (defined $$temp_fd and $$temp_fd->opened) {
>> -		if ($TEMP_FILES{$$temp_fd}{locked}) {
>> +		if (temp_is_locked($name)) {
>> 			throw Error::Simple("Temp file with moniker '" .
>> 				$name . "' already in use");
>> 		}
>
> There's a problem with this use of temp_is_locked. There is an else
> clause right after this:
>
> 	} else {
> 		if (defined $$temp_fd) {
> 			# then we're here because of a closed handle.
>
> Prior to the patch, the comment is correct, but after the patch, the
> if block may also be entered if the file is open but locked. This is
> because temp_is_locked checks that the temp file is defined, open,
> and locked.
>
> This issue leads to lots of
>
>  Temp file 'svn_delta_3360_0' was closed. Opening replacement.
>
> messages for me.
>
> Reverting the change in _temp_cache solves the problem for me.
> Adding an " && !$$temp_fd->opened" clause to the if statement also
> works, but this is less efficient.
That change was made as a result of this feedback:
On Jul 6, 2013, at 17:11, Jonathan Nieder wrote:
Show 14 quoted lines
> Hi,
>
> Kyle McKay wrote:
>
>> The temp_is_locked function can be used to determine whether
>> or not a given name previously passed to temp_acquire is
>> currently locked.
> [...]
>> +=item temp_is_locked ( NAME )
>> +
>> +Returns true if the file mapped to C<NAME> is currently locked.
>> +
>> +If true is returned, an attempt to C<temp_acquire()> the same
>
[snip]
>
> Looking more closely, it looks like this is factoring out the idiom
> for checking if a name is already in use from the _temp_cache
> function.  Would it make sense for _temp_cache to call this helper?

So I think the answer is it does not make sense for _temp_cache to call this helper.

Will release a v4 in just a moment with that single change reverted.
Previous: David RothenbergerNext: Jonathan Nieder
Message 4 of 7 in “allow git-svn fetching to work using serf”
  1. 0/2 allow git-svn fetching to work using serfKyle J. McKay, Jul 7, 2013
  2. 1/2 Git.pm: add new temp_is_locked functionKyle J. McKay, Jul 7, 2013
  3. David RothenbergerJul 18, 2013
  4. Kyle J. McKayJul 18, 2013
  5. Jonathan NiederJul 18, 2013
  6. 2/2 git-svn: allow git-svn fetching to work using serfKyle J. McKay, Jul 7, 2013
  7. Junio C HamanoJul 8, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.