Is this a fix or a work-around? i.e., if you set MAX_OPEN_HISTORIES to, say, 2, can you then reproduce the failure you saw before?
It's just not clear to me whether MAX_OPEN_HISTORIES is in fact an assumption that "no file will be 'svn mv'd more than 32 times" or similar. Kevin Radke wrote on Wed, Jan 26, 2011 at 16:59:54 -0600: > This also needs a back-port to the 1.6.x branch. > > [[[ > Fix issue #3789: Correctly ignore missing locations when a renamed file > has more than MAX_OPEN_HISTORIES. > > * subversion/libsvn_repos/log.c > (get_path_histories): Ignore more bogus repository locations to restore > pre-1.6.15 log -g behavior. This fixes client > chunk > errors introduced by r1028108. > ]]] > > > Index: subversion/libsvn_repos/log.c > =================================================================== > --- subversion/libsvn_repos/log.c (revision 1063904) > +++ subversion/libsvn_repos/log.c (working copy) > @@ -1052,6 +1052,7 @@ > { > svn_fs_root_t *root; > apr_pool_t *iterpool; > + svn_error_t *err; > int i; > > /* Create a history object for each path so we can walk through > @@ -1093,7 +1094,6 @@ > > if (i < MAX_OPEN_HISTORIES) > { > - svn_error_t *err; > err = svn_fs_node_history(&info->hist, root, this_path, pool); > if (err > && ignore_missing_locations > @@ -1115,10 +1115,20 @@ > info->newpool = NULL; > } > > - SVN_ERR(get_history(info, fs, > - strict_node_history, > - authz_read_func, authz_read_baton, > - hist_start, pool)); > + err = get_history(info, fs, > + strict_node_history, > + authz_read_func, authz_read_baton, > + hist_start, pool); > + if (err > + && ignore_missing_locations > + && (err->apr_err == SVN_ERR_FS_NOT_FOUND || > + err->apr_err == SVN_ERR_FS_NOT_DIRECTORY || > + err->apr_err == SVN_ERR_FS_NO_SUCH_REVISION)) > + { > + svn_error_clear(err); > + continue; > + } > + SVN_ERR(err); > APR_ARRAY_PUSH(*histories, struct path_info *) = info; > } > svn_pool_destroy(iterpool);