[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Effect of shared reps on skip deltas

From: Stefan Fuhrmann <stefan.fuhrmann_at_wandisco.com>
Date: Sun, 9 Dec 2012 15:58:38 +0100

Hi there,

Ben asked me on IRC what the worst case scenario for rep
deltification in FSFS and I gave him the obvious answer.

Thinking about it just a little more would have lead me straight
to a design flaw / side effect that came with rep sharing:
When a noderev history e.g. starts with a shared reps, the
latter is not taken into account for determining the appropriate
skip delta distance. The script below reproduces the effect
and I don't think the "add-without-history" followed by a
modification example is not too contrived.

The effect of that are worse than just a performance hit:
When reconstructing the contents from the deltified reps,
we open all contributing files and run out of file handles
after e.g. 1000 revs / rev packs.

r1418963 fixes the problem for most cases.

-- Stefan^2.

[[[
#!/bin/sh

# globals

SVN="./subversion/svn/svn"
SVNADMIN="./subversion/svnadmin/svnadmin"
DATA="/dev/shm/data"
MAXCOUNT=100000

# prepare

rm -rf $DATA
mkdir $DATA

${SVNADMIN} create $DATA/repo
${SVN} co file://$DATA/repo $DATA/wc

# initial data

echo "1" > $DATA/wc/1
${SVN} add $DATA/wc/1
${SVN} ci $DATA/wc -m ""

# create long chain

PREV="1"
CURRENT=2
ODD=1

while [ $CURRENT -lt $MAXCOUNT ]; do

  cp $DATA/wc/$PREV $DATA/wc/$CURRENT
  ${SVN} rm $DATA/wc/$PREV -q
  ${SVN} add $DATA/wc/$CURRENT
  ${SVN} ci $DATA/wc -m "" -q

  echo " $CURRENT" >> $DATA/wc/$CURRENT
  ${SVN} ci $DATA/wc -m "" -q

# maintenance every 100 iterations
  if [ $ODD -eq 0 ]; then
# optional. reduces number of files
    ${SVNADMIN} pack $DATA/repo -q
# limit size of pristines
    ${SVN} cleanup $DATA/wc
  fi

  PREV=$CURRENT
  CURRENT=`echo 1 + $CURRENT | bc`
  ODD=`echo $CURRENT % 100 | bc`

done
]]]

-- 
Certified & Supported Apache Subversion Downloads:
*
http://www.wandisco.com/subversion/download
*
Received on 2012-12-09 15:59:13 CET

This is an archived mail posted to the Subversion Dev mailing list.