Class FSFS


  • public class FSFS
    extends java.lang.Object
    Version:
    1.3
    • Field Detail

      • REPOS_FORMAT_FILE

        public static final java.lang.String REPOS_FORMAT_FILE
        See Also:
        Constant Field Values
      • DB_LOGS_LOCK_FILE

        public static final java.lang.String DB_LOGS_LOCK_FILE
        See Also:
        Constant Field Values
      • TXN_CURRENT_FILE

        public static final java.lang.String TXN_CURRENT_FILE
        See Also:
        Constant Field Values
      • MIN_UNPACKED_REV_FILE

        public static final java.lang.String MIN_UNPACKED_REV_FILE
        See Also:
        Constant Field Values
      • TXN_CURRENT_LOCK_FILE

        public static final java.lang.String TXN_CURRENT_LOCK_FILE
        See Also:
        Constant Field Values
      • REVISION_PROPERTIES_DIR

        public static final java.lang.String REVISION_PROPERTIES_DIR
        See Also:
        Constant Field Values
      • TRANSACTIONS_DIR

        public static final java.lang.String TRANSACTIONS_DIR
        See Also:
        Constant Field Values
      • TRANSACTION_PROTOS_DIR

        public static final java.lang.String TRANSACTION_PROTOS_DIR
        See Also:
        Constant Field Values
      • NODE_ORIGINS_DIR

        public static final java.lang.String NODE_ORIGINS_DIR
        See Also:
        Constant Field Values
      • PACK_KIND_MANIFEST

        public static final java.lang.String PACK_KIND_MANIFEST
        See Also:
        Constant Field Values
      • ENABLE_REP_SHARING_OPTION

        public static final java.lang.String ENABLE_REP_SHARING_OPTION
        See Also:
        Constant Field Values
      • REP_SHARING_SECTION

        public static final java.lang.String REP_SHARING_SECTION
        See Also:
        Constant Field Values
      • PACKED_REVPROPS_SECTION

        public static final java.lang.String PACKED_REVPROPS_SECTION
        See Also:
        Constant Field Values
      • COMPRESS_PACKED_REVPROPS_OPTION

        public static final java.lang.String COMPRESS_PACKED_REVPROPS_OPTION
        See Also:
        Constant Field Values
      • REVPROP_PACK_SIZE_OPTION

        public static final java.lang.String REVPROP_PACK_SIZE_OPTION
        See Also:
        Constant Field Values
      • BLOCK_SIZE_OPTION

        public static final java.lang.String BLOCK_SIZE_OPTION
        See Also:
        Constant Field Values
      • L2P_PAGE_SIZE_OPTION

        public static final java.lang.String L2P_PAGE_SIZE_OPTION
        See Also:
        Constant Field Values
      • P2L_PAGE_SIZE_OPTION

        public static final java.lang.String P2L_PAGE_SIZE_OPTION
        See Also:
        Constant Field Values
      • TXN_MERGEINFO_PATH

        public static final java.lang.String TXN_MERGEINFO_PATH
        See Also:
        Constant Field Values
      • TXN_PATH_EXT_CHILDREN

        public static final java.lang.String TXN_PATH_EXT_CHILDREN
        See Also:
        Constant Field Values
      • PATH_PREFIX_NODE

        public static final java.lang.String PATH_PREFIX_NODE
        See Also:
        Constant Field Values
      • TXN_PATH_EXT_PROPS

        public static final java.lang.String TXN_PATH_EXT_PROPS
        See Also:
        Constant Field Values
      • SVN_OPAQUE_LOCK_TOKEN

        public static final java.lang.String SVN_OPAQUE_LOCK_TOKEN
        See Also:
        Constant Field Values
      • CHILDREN_LOCK_KEY

        public static final java.lang.String CHILDREN_LOCK_KEY
        See Also:
        Constant Field Values
      • IS_DAV_COMMENT_LOCK_KEY

        public static final java.lang.String IS_DAV_COMMENT_LOCK_KEY
        See Also:
        Constant Field Values
      • CREATION_DATE_LOCK_KEY

        public static final java.lang.String CREATION_DATE_LOCK_KEY
        See Also:
        Constant Field Values
      • EXPIRATION_DATE_LOCK_KEY

        public static final java.lang.String EXPIRATION_DATE_LOCK_KEY
        See Also:
        Constant Field Values
      • COMMENT_LOCK_KEY

        public static final java.lang.String COMMENT_LOCK_KEY
        See Also:
        Constant Field Values
      • PRE_12_COMPAT_UNNEEDED_FILE_CONTENTS

        public static final java.lang.String PRE_12_COMPAT_UNNEEDED_FILE_CONTENTS
        See Also:
        Constant Field Values
      • REPOSITORY_FORMAT_LEGACY

        public static final int REPOSITORY_FORMAT_LEGACY
        See Also:
        Constant Field Values
      • LAYOUT_FORMAT_OPTION_MINIMAL_FORMAT

        public static final int LAYOUT_FORMAT_OPTION_MINIMAL_FORMAT
        See Also:
        Constant Field Values
      • MIN_PROTOREVS_DIR_FORMAT

        public static final int MIN_PROTOREVS_DIR_FORMAT
        See Also:
        Constant Field Values
      • MIN_NO_GLOBAL_IDS_FORMAT

        public static final int MIN_NO_GLOBAL_IDS_FORMAT
        See Also:
        Constant Field Values
      • MIN_KIND_IN_CHANGED_FORMAT

        public static final int MIN_KIND_IN_CHANGED_FORMAT
        See Also:
        Constant Field Values
      • MIN_PACKED_REVPROP_SQLITE_DEV_FORMAT

        public static final int MIN_PACKED_REVPROP_SQLITE_DEV_FORMAT
        See Also:
        Constant Field Values
      • MIN_PACKED_REVPROP_FORMAT

        public static final int MIN_PACKED_REVPROP_FORMAT
        See Also:
        Constant Field Values
      • MIN_LOG_ADDRESSING_MINIMAL_FORMAT

        public static final int MIN_LOG_ADDRESSING_MINIMAL_FORMAT
        See Also:
        Constant Field Values
      • MIN_MERGEINFO_IN_CHANGED_FORMAT

        public static final int MIN_MERGEINFO_IN_CHANGED_FORMAT
        See Also:
        Constant Field Values
      • DEFAULT_MAX_FILES_PER_DIRECTORY

        private static long DEFAULT_MAX_FILES_PER_DIRECTORY
      • REVISION_PROPERTIES_DB

        public static final java.lang.String REVISION_PROPERTIES_DB
        See Also:
        Constant Field Values
      • REVISION_PROPERTIES_TABLE

        public static final java.lang.String REVISION_PROPERTIES_TABLE
        See Also:
        Constant Field Values
      • MIN_UNPACKED_REV

        public static final java.lang.String MIN_UNPACKED_REV
        See Also:
        Constant Field Values
      • DB_FORMAT_PRE_17_USE_AS_DEFAULT

        public static final boolean DB_FORMAT_PRE_17_USE_AS_DEFAULT
        See Also:
        Constant Field Values
      • myDBFormat

        private int myDBFormat
      • myReposFormat

        private int myReposFormat
      • myUUID

        private java.lang.String myUUID
      • myFSType

        private java.lang.String myFSType
      • myRepositoryRoot

        private java.io.File myRepositoryRoot
      • myRevisionsRoot

        private java.io.File myRevisionsRoot
      • myRevisionPropertiesRoot

        private java.io.File myRevisionPropertiesRoot
      • myTransactionsRoot

        private java.io.File myTransactionsRoot
      • myLocksRoot

        private java.io.File myLocksRoot
      • myDBRoot

        private java.io.File myDBRoot
      • myWriteLockFile

        private java.io.File myWriteLockFile
      • myCurrentFile

        private java.io.File myCurrentFile
      • myTransactionCurrentFile

        private java.io.File myTransactionCurrentFile
      • myTransactionCurrentLockFile

        private java.io.File myTransactionCurrentLockFile
      • myTransactionProtoRevsRoot

        private java.io.File myTransactionProtoRevsRoot
      • myNodeOriginsDir

        private java.io.File myNodeOriginsDir
      • myRepositoryFormatFile

        private java.io.File myRepositoryFormatFile
      • myDBFormatFile

        private java.io.File myDBFormatFile
      • myUUIDFile

        private java.io.File myUUIDFile
      • myFSTypeFile

        private java.io.File myFSTypeFile
      • myMinUnpackedRevFile

        private java.io.File myMinUnpackedRevFile
      • myRepositoryCacheFile

        private java.io.File myRepositoryCacheFile
      • myMaxFilesPerDirectory

        private long myMaxFilesPerDirectory
      • myYoungestRevisionCache

        private long myYoungestRevisionCache
      • myMinUnpackedRevision

        private long myMinUnpackedRevision
      • myUseLogAddressing

        private boolean myUseLogAddressing
      • myMinUnpackedRevProp

        private long myMinUnpackedRevProp
      • myIsHooksEnabled

        private boolean myIsHooksEnabled
      • myCompressPackedRevprops

        private boolean myCompressPackedRevprops
      • myIsRepSharingAllowed

        private boolean myIsRepSharingAllowed
      • myRevpropPackSize

        private long myRevpropPackSize
      • myBlockSize

        private long myBlockSize
      • myL2PPageSize

        private long myL2PPageSize
      • myP2LPageSize

        private long myP2LPageSize
    • Constructor Detail

      • FSFS

        public FSFS​(java.io.File repositoryRoot)
    • Method Detail

      • setHooksEnabled

        public void setHooksEnabled​(boolean enabled)
      • isHooksEnabled

        public boolean isHooksEnabled()
      • getDBFormat

        public int getDBFormat()
      • getMaxFilesPerDirectory

        public long getMaxFilesPerDirectory()
      • getReposFormat

        public int getReposFormat()
      • isUseLogAddressing

        public boolean isUseLogAddressing()
      • verifyBlockSize

        private void verifyBlockSize​(long blockSize,
                                     long itemSize,
                                     java.lang.String name)
                              throws SVNException
        Throws:
        SVNException
      • getDBRoot

        public java.io.File getDBRoot()
      • getWriteLockFile

        public java.io.File getWriteLockFile()
      • getUUIDFile

        public java.io.File getUUIDFile()
      • getDBRevsDir

        public java.io.File getDBRevsDir()
      • getDBLocksDir

        public java.io.File getDBLocksDir()
      • getFSTypeFile

        public java.io.File getFSTypeFile()
      • getTransactionsParentDir

        public java.io.File getTransactionsParentDir()
      • getRepositoryRoot

        public java.io.File getRepositoryRoot()
      • getRevisionPropertiesRoot

        public java.io.File getRevisionPropertiesRoot()
      • getRepositoryFormatFile

        public java.io.File getRepositoryFormatFile()
      • getDBFormatFile

        public java.io.File getDBFormatFile()
      • getNodeOriginsDir

        public java.io.File getNodeOriginsDir()
      • getCurrentFile

        public java.io.File getCurrentFile()
      • getRepositoryCacheFile

        public java.io.File getRepositoryCacheFile()
      • writeDBFormat

        public void writeDBFormat​(int format,
                                  long maxFilesPerDir,
                                  boolean overwrite)
                           throws SVNException
        Throws:
        SVNException
      • getPackedRevPropFile

        private java.io.File getPackedRevPropFile​(long revision)
                                           throws SVNException
        Throws:
        SVNException
      • decodeUncompressedSize

        private static long decodeUncompressedSize​(java.io.InputStream inputStream,
                                                   int lengthRecordSize,
                                                   int[] outputBytesRead)
                                            throws SVNException
        Throws:
        SVNException
      • readNumber

        private static long readNumber​(java.io.BufferedReader reader)
                                throws SVNException,
                                       java.io.IOException
        Throws:
        SVNException
        java.io.IOException
      • readNumber

        private static long readNumber​(java.io.InputStream inputStream)
                                throws SVNException
        Throws:
        SVNException
      • isPackedRevisionProperties

        private boolean isPackedRevisionProperties​(long revision)
      • applyDeltaFromFSFile

        private byte[] applyDeltaFromFSFile​(FSFile revisionFile,
                                            int deltaSize,
                                            java.io.InputStream baseStream,
                                            java.lang.StringBuilder outputChecksum)
                                     throws java.io.IOException,
                                            SVNException
        Throws:
        java.io.IOException
        SVNException
      • listTransactions

        public java.util.Map listTransactions()
      • getNewRevisionFile

        public java.io.File getNewRevisionFile​(long newRevision)
      • getNewRevisionPropertiesFile

        public java.io.File getNewRevisionPropertiesFile​(long newRevision)
      • getTransactionDir

        public java.io.File getTransactionDir​(java.lang.String txnID)
      • setYoungestRevisionCache

        public void setYoungestRevisionCache​(long revision)
      • getRevisionPropertiesFile

        public java.io.File getRevisionPropertiesFile​(long revision,
                                                      boolean returnMissing)
                                               throws SVNException
        Throws:
        SVNException
      • getNextIDsFile

        public java.io.File getNextIDsFile​(java.lang.String txnID)
      • writeNextIDs

        public void writeNextIDs​(java.lang.String txnID,
                                 java.lang.String nodeID,
                                 java.lang.String copyID)
                          throws SVNException
        Throws:
        SVNException
      • getRevPropPackSize

        protected long getRevPropPackSize()
      • isRepSharingAllowed

        public boolean isRepSharingAllowed()
      • getBlockSize

        public long getBlockSize()
      • getL2PPageSize

        public long getL2PPageSize()
      • getP2LPageSize

        public long getP2LPageSize()
      • getTransactionPropertiesFile

        public java.io.File getTransactionPropertiesFile​(java.lang.String txnID)
      • getTransactionProtoRevsDir

        public java.io.File getTransactionProtoRevsDir()
      • getTransactionProtoRevFile

        public java.io.File getTransactionProtoRevFile​(java.lang.String txnID)
      • getTransactionProtoRevLockFile

        public java.io.File getTransactionProtoRevLockFile​(java.lang.String txnID)
      • getTransactionRevNodeFile

        public java.io.File getTransactionRevNodeFile​(FSID id)
      • writeTxnNodeRevision

        public void writeTxnNodeRevision​(java.io.OutputStream revNodeFile,
                                         FSRevisionNode revNode)
                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • getLock

        public SVNLock getLock​(java.lang.String repositoryPath,
                               boolean haveWriteLock,
                               boolean throwError)
                        throws SVNException
        Throws:
        SVNException
      • fetchLockFromDigestFile

        public SVNLock fetchLockFromDigestFile​(java.io.File digestFile,
                                               java.lang.String repositoryPath,
                                               java.util.Collection children)
                                        throws SVNException
        Throws:
        SVNException
      • getDigestFileFromRepositoryPath

        public java.io.File getDigestFileFromRepositoryPath​(java.lang.String repositoryPath)
                                                     throws SVNException
        Throws:
        SVNException
      • getDigestFromRepositoryPath

        public java.lang.String getDigestFromRepositoryPath​(java.lang.String repositoryPath)
                                                     throws SVNException
        Throws:
        SVNException
      • unlockPath

        public void unlockPath​(java.lang.String path,
                               java.lang.String token,
                               java.lang.String username,
                               boolean breakLock,
                               boolean enableHooks)
                        throws SVNException
        Throws:
        SVNException
      • lockPath

        public SVNLock lockPath​(java.lang.String path,
                                java.lang.String token,
                                java.lang.String username,
                                java.lang.String comment,
                                java.util.Date expirationDate,
                                long currentRevision,
                                boolean stealLock,
                                boolean isDAVComment)
                         throws SVNException
        Throws:
        SVNException
      • getDeletedRevision

        public long getDeletedRevision​(java.lang.String path,
                                       long startRev,
                                       long endRev)
                                throws SVNException
        Throws:
        SVNException
      • getNodeOrigin

        public java.lang.String getNodeOrigin​(java.lang.String nodeID)
                                       throws SVNException
        Throws:
        SVNException
      • supportsMergeInfo

        public boolean supportsMergeInfo()
      • findRepositoryRoot

        public static java.io.File findRepositoryRoot​(java.io.File path)
      • findRepositoryRoot

        public static java.lang.String findRepositoryRoot​(java.lang.String host,
                                                          java.lang.String path)
      • getDefaultMaxFilesPerDirectory

        public static long getDefaultMaxFilesPerDirectory()
      • setDefaultMaxFilesPerDirectory

        public static void setDefaultMaxFilesPerDirectory​(long maxFilesPerDirectory)
      • isPackedRevision

        public boolean isPackedRevision​(long revision)
      • getPackedBaseRevision

        public long getPackedBaseRevision​(long revision)
      • getNodeOriginFile

        protected java.io.File getNodeOriginFile​(java.lang.String nodeID)
      • getTransactionRevisionPrototypeFile

        protected FSFile getTransactionRevisionPrototypeFile​(java.lang.String txnID)
      • getTransactionChangesFile

        protected FSFile getTransactionChangesFile​(java.lang.String txnID)
      • getTransactionRevisionNodeChildrenFile

        protected FSFile getTransactionRevisionNodeChildrenFile​(FSID txnID)
      • getAbsoluteRevisionPath

        protected java.io.File getAbsoluteRevisionPath​(long revision)
                                                throws SVNException
        Throws:
        SVNException
      • getTransactionRevisionNodePropertiesFile

        protected FSFile getTransactionRevisionNodePropertiesFile​(FSID id)
      • getPackedRevPath

        protected java.io.File getPackedRevPath​(long revision,
                                                java.lang.String kind)
                                         throws SVNException
        Throws:
        SVNException
      • getPackedRevPropsShardPath

        protected java.io.File getPackedRevPropsShardPath​(long revision)
                                                   throws SVNException
        Throws:
        SVNException
      • getPackDir

        protected java.io.File getPackDir​(long revision)
      • getPackFile

        protected java.io.File getPackFile​(long revision)
      • getManifestFile

        protected java.io.File getManifestFile​(long revision)
      • getMinUnpackedRevFile

        protected java.io.File getMinUnpackedRevFile()
      • getTransactionCurrentFile

        protected java.io.File getTransactionCurrentFile()
      • getTransactionCurrentLockFile

        protected java.io.File getTransactionCurrentLockFile()
      • getConfigFile

        public java.io.File getConfigFile()
      • writeCurrentFile

        protected void writeCurrentFile​(long revision,
                                        java.lang.String nextNodeID,
                                        java.lang.String nextCopyID)
                                 throws SVNException,
                                        java.io.IOException
        Throws:
        SVNException
        java.io.IOException
      • ensureRevisionsExists

        private void ensureRevisionsExists​(long revision)
                                    throws SVNException
        Throws:
        SVNException
      • unlock

        private void unlock​(java.lang.String path,
                            java.lang.String token,
                            java.lang.String username,
                            boolean breakLock)
                     throws SVNException
        Throws:
        SVNException
      • lock

        private SVNLock lock​(java.lang.String path,
                             java.lang.String token,
                             java.lang.String username,
                             java.lang.String comment,
                             java.util.Date expirationDate,
                             long currentRevision,
                             boolean stealLock,
                             boolean isDAVComment)
                      throws SVNException
        Throws:
        SVNException
      • ensureDirExists

        private boolean ensureDirExists​(java.io.File dir,
                                        boolean create)
      • writeDigestLockFile

        private void writeDigestLockFile​(SVNLock lock,
                                         java.util.Collection children,
                                         java.lang.String repositoryPath,
                                         boolean isDAVComment)
                                  throws SVNException
        Throws:
        SVNException
      • lookupOffsetInProtoIndex

        protected long lookupOffsetInProtoIndex​(FSFile file,
                                                java.lang.String txnId,
                                                long itemIndex)
                                         throws SVNException
        Throws:
        SVNException
      • parseRepEntryValue

        private FSEntry parseRepEntryValue​(java.lang.String name,
                                           java.lang.String value)
      • isRepositoryRoot

        private static boolean isRepositoryRoot​(java.io.File candidatePath)
      • getRevisionPropertiesDbPath

        public java.io.File getRevisionPropertiesDbPath()
      • getMinUnpackedRevPropPath

        public java.io.File getMinUnpackedRevPropPath()
      • isCompressPackedRevprops

        public boolean isCompressPackedRevprops()