Ticket #27: p4changes.darcs

File p4changes.darcs, 7.7 KB (added by slamb, 5 years ago)

"darcs send" of fix

Line 
1
2New patches:
3
4[p4changes
5Scott Lamb <slamb@slamb.org>**20070224021946
6 
7 Use a more optimal form of "p4 changes", as suggested by Stewart Lord of
8 Perforce technical support. From the p4d release notes:
9 
10   Special handling for @changelist - #85130 **
11 
12     The syntax '//path/file@change1,@somethingelse' now performs
13     better in many common cases.  Previously, the server would
14     search based on changelist number or file path according to
15     hard-coded rules.  This worked poorly in a few common cases:
16     both '//singlefile@1,@date' and '//...@5000,5001' started
17     with the wrong search.  This left users trying odd syntax
18     to second guess the server.  Now the server adaptively tries
19     searching by change number, but if that appears to be too
20     inefficient (more than 80% of the revisions not matching the
21     path), it switches to searching by path.  (Bug #18689).
22 
23 In 2wire's case, this was the top source of server load, scanning
24 ~2,200,000 rows for one project and ~2,700,000 rows for another every
25 10 minutes. Now each scans 10-20 rows on average.
26 (Figures gathered with -Ztrack=1.)
27] {
28hunk ./buildbot/changes/p4poller.py 31
29-                     "p4bin", "pollinterval", "histmax"]
30+                     "p4bin", "pollinterval"]
31hunk ./buildbot/changes/p4poller.py 48
32-                 pollinterval=60 * 10, histmax=100):
33+                 pollinterval=60 * 10, histmax=None):
34hunk ./buildbot/changes/p4poller.py 66
35-        @param histmax:      maximum number of changes to look back through
36+        @param histmax:      (obsolete) maximum number of changes to look back through.
37+                             ignored; accepted for backwards compatibility.
38hunk ./buildbot/changes/p4poller.py 77
39-        self.histmax = histmax
40hunk ./buildbot/changes/p4poller.py 124
41-        args.extend(['changes', '-m', str(self.histmax), self.p4base + '...'])
42+        args.extend(['changes'])
43+        if self.last_change is not None:
44+            args.extend(['%s...@%d,now' % (self.p4base, self.last_change+1)])
45+        else:
46+            args.extend(['-m', '1', '%s...' % (self.p4base,)])
47hunk ./buildbot/changes/p4poller.py 140
48-            num = m.group('num')
49+            num = int(m.group('num'))
50hunk ./buildbot/changes/p4poller.py 142
51-                log.msg('P4Poller: starting at change %s' % num)
52+                log.msg('P4Poller: starting at change %d' % num)
53hunk ./buildbot/changes/p4poller.py 145
54-            if last_change == num:
55-                break
56hunk ./buildbot/changes/p4poller.py 163
57-        args.extend(['describe', '-s', num])
58+        args.extend(['describe', '-s', str(num)])
59hunk ./buildbot/test/test_p4poller.py 41
60-    '3': change_3_log +
61+    3: change_3_log +
62hunk ./buildbot/test/test_p4poller.py 48
63-    '2': change_2_log +
64+    2: change_2_log +
65hunk ./buildbot/test/test_p4poller.py 54
66-    '5': change_4_log +
67+    5: change_4_log +
68hunk ./buildbot/test/test_p4poller.py 111
69-        self.assertEquals(self.t.last_change, '1')
70+        self.assertEquals(self.t.last_change, 1)
71hunk ./buildbot/test/test_p4poller.py 118
72-        self.assertEquals(self.t.last_change, '3')
73+        self.assertEquals(self.t.last_change, 3)
74hunk ./buildbot/test/test_p4poller.py 173
75-        c['3'] = 'Perforce client error:\n...'
76+        c[3] = 'Perforce client error:\n...'
77hunk ./buildbot/test/test_p4poller.py 189
78-        self.assertEquals(self.t.last_change, '2')
79+        self.assertEquals(self.t.last_change, 2)
80hunk ./buildbot/test/test_p4poller.py 216
81-        self.assertEquals(self.t.last_change, '5')
82+        self.assertEquals(self.t.last_change, 5)
83}
84
85Context:
86
87[add Mark Pauley's launchd .plist files
88warner@lothar.com**20070207081942]
89[docs: fix Requirements section to stop claiming python-2.2 compatibility. Closes #13.
90warner@lothar.com**20070207061242]
91[hush most pyflakes warnings
92warner@lothar.com**20070207042433]
93[html.py: oops, close the FORM tag
94warner@lothar.com**20070207034138]
95[master.py: warn about orphan Builders: those which have no Schedulers to drive them
96warner@lothar.com**20070207033848]
97[BotPerspective.__repr__: correct bitrot
98warner@lothar.com**20070207033312]
99[update bb_applet.py, adding prefs and connect/disconnect controls
100warner@allmydata.com**20070207023115]
101[update ChangeLog with 'buildbot try --diff' ticket number
102warner@lothar.com**20070206230342]
103[document 'buildbot try --diff'
104warner@lothar.com**20070206203428]
105[merge in 'buildbot try --diff' branch
106warner@lothar.com**20070206194922]
107[steps.source: when our SourceStamp has a patch, add the contents of the patch as a LogFile
108warner@allmydata.com**20070206193402]
109[implement 'try --diff', might not work yet, still needs docs and tests
110warner@allmydata.com**20070206190608]
111[test_steps.py: remove the last use of reactor.iterate() in the whole tree
112warner@lothar.com**20070206082226]
113[MailNotifier: assert that 'mode' is one of the supported values
114warner@lothar.com**20070205184231]
115[BonsaiPoller: handle non-ascii characters. Patch from Ben Hearsum, closes SF#1632641
116warner@lothar.com**20070131004315]
117[produce both .tar.gz and .zip source bundles. Closes SF#1222216
118warner@lothar.com**20070127211330]
119[hush some pyflakes warnings
120warner@lothar.com**20070123210346]
121[clean up maildir usage, remove a use of reactor.iterate from tests
122warner@lothar.com**20070123210210]
123[bump command_version to indicate bzr support
124warner@lothar.com**20070123192331]
125[buildbot/process/builder.py: don't use 'with', since it will be a reserved word in python2.6
126warner@lothar.com**20070123075727]
127[bb_applet.py: add dots, swap columns left-right
128warner@lothar.com**20070123072857]
129[add a gnome-panel status applet
130warner@lothar.com**20070123071812]
131[merge in Bazaar (bzr) support. There are still a few unresolved issues.
132warner@lothar.com**20070123054739]
133[add support for bzr (bazaar-ng)
134warner@lothar.com**20070111005702]
135[darcs_buildbot.py: tidy up the progress messages
136warner@lothar.com**20070120101808]
137[darcs_buildbot.py: enhance to handle multiple patches in a single push. Fixes SF#1534049
138warner@lothar.com**20070117235903]
139[mark buildbot.changes.freshcvsmail as deprecated
140warner@lothar.com**20061212034328]
141[remove old process/maxq.py, it now lives in buildbot.steps.maxq
142warner@lothar.com**20061212033036]
143[remove more unused imports
144warner@lothar.com**20061212032905]
145[remove unfinished TrialReporter
146warner@lothar.com**20061212032235]
147[remove some unused imports
148warner@lothar.com**20061212031101]
149[remove deprecated backwards-compatibility buildbot.process.step aliases
150warner@lothar.com**20061211090833]
151[remove the now-empty twcompat.py
152warner@lothar.com**20061211090345]
153[remove which(), twisted-2.0.0 and later has it
154warner@lothar.com**20061211090204]
155[remove the monkeypatched t.i.utils.getProcessOutputAndValue, unnecessary with twisted-2.0.0 and later
156warner@lothar.com**20061211085919]
157[remove the monkeypatched defer.waitForDeferred, unnecessary with twisted-2.0.0 and later
158warner@lothar.com**20061211085809]
159[get implements() from zope.interface directly, not from twcompat
160warner@lothar.com**20061211085340]
161[status.mail doesn't need to fall back to twisted.protocols.smtp.sendmail in a Twisted>=2.0.0 world
162warner@lothar.com**20061211084711]
163[get Interface from zope.interface directly, not from twcompat
164warner@lothar.com**20061211083750]
165[more post-Twisted-1.3.0 cleanup: remove twcompat.providedBy, use zope.interface native methods instead
166warner@lothar.com**20061211083442]
167[remove all uses of buildbot.twcompat.maybeWait, now that we don't need to maintain Twisted-1.3.0 compatibility
168warner@lothar.com**20061211082151]
169[bump version to 0.7.5+ while between releases
170warner@lothar.com**20061211081015]
171[TAG buildbot-0.7.5
172warner@lothar.com**20061211054327]
173Patch bundle hash:
1740a811c2b7faffc3403cfd3c3aa9fc254fbd57581