C++FLAGS = -g -D_GNU_SOURCE ; DEFINES += OS_$(OS) OS_$(OS)$(OSVER) OS_$(OS)$(OSPLAT) OS_$(OS)$(OSVER)$(OSPLAT) ; OPTIM = ; OSINFO = $(OS)$(OSVER:E)$(OSPLAT:E) ; LOCATE_TARGET = $(DOTDOT)$(SLASH)$(DOTDOT)$(SLASH)lib.$(OSINFO:L) ; P4API = $(DOTDOT)$(SLASH)p4api$(SLASH)$(OSINFO:L) ; HDRS = $(P4API)$(SLASH)include$(SLASH)p4 ; switch $(OSINFO) { case LINUX26X86 : C++FLAGS += -m32 ; case LINUX26X86_64 : C++FLAGS += -m64 ; case SOLARIS8SPARC : C++ = gcc ; case SOLARIS10X86_64 : C++ = gcc ; C++FLAGS += -m64 ; } Library common : buffile.cc err.cc log.cc msgspawn.cc pipe.cc spawn.cc ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#7 | 7887 | Michael Shields | p4jrep Version 0.92 (beta) binaries for 2010.2. | ||
#6 | 6473 | Michael Shields | Ported to SOLARIS10X86_64. | ||
#5 | 6167 | Michael Shields | Added -m64 for linux26x86_64 compiles and link. | ||
#4 | 6155 | Michael Shields |
Updated for the 2007.3 release while maintaining compatibility with prior releases. 2007.3 and later servers might rotate the journal by renaming it rather than copying and truncating it. A renamed journal is now detected by comparing the device and inode returned from statting by the journal's file name and statting by the journal's file descriptor. This algorithm (suggested by J.T. Goldstone; thanks J.T.!) is faster than reopening the journal and seeking if the journal was not rotated (~2.0 seconds vs. ~2.7 seconds for 1,000,000 iterations on my laptop). |
||
#3 | 5288 | Michael Shields | Updated to use the 2005.2 API. | ||
#2 | 5119 | Michael Shields |
Added -t delay in an attempt to ensure transactional atomicity. If no additional journal entries are written during this delay, the transaction is assumed complete, which closes the pipe, which terminates the command (which if includes a p4d -jr, releases the locks in the target server, allowing commands access to the replicated atomic transaction). By default, this delay is ten milliseconds. Locking the journal does not ensure transactional atomicity since the server locks the journal once for each journal entry written, not once per transaction. And we would like to avoid locking the journal since that would introduce a potential concurrency problem. Not all operations in the server are atomic transactions and therefore cannot be replicated atomically. For example, updating a client's have list as files are being synced is not an atomic transaction. But committing a submit is an atomic transaction, and this change (with perhaps some site-specific tuning of the -t delay) attempts to replicate the commit atomically. |
||
#1 | 4839 | Michael Shields | Pushing p4jrep source into the public depot. |