Merge lp:~chipaca/ubuntuone-client/fixes-for-aq-states into lp:ubuntuone-client

Proposed by John Lenton
Status: Merged
Approved by: dobey
Approved revision: 139
Merged at revision: not available
Proposed branch: lp:~chipaca/ubuntuone-client/fixes-for-aq-states
Merge into: lp:ubuntuone-client
Diff against target: None lines
To merge this branch: bzr merge lp:~chipaca/ubuntuone-client/fixes-for-aq-states
Reviewer Review Type Date Requested Status
dobey (community) Approve
Facundo Batista (community) Approve
Review via email: mp+10070@code.launchpad.net

Commit message

Fixes for states with bad transitions.

To post a comment you must log in.
Revision history for this message
John Lenton (chipaca) wrote :

Some states had bad transitions. Oops! Thanks to Facu for finding these. I've added a check to the sanity checker... but we need better coverage.

Revision history for this message
John Lenton (chipaca) wrote :

> Some states had bad transitions. Oops! Thanks to Facu for finding these. I've
> added a check to the sanity checker... but we need better coverage.

Just for the record, because I've been accused of false modesty (the horror!): Facu run across the bug (syncdaemon in idle with things in the queue), I found the cause of it.

Revision history for this message
Facundo Batista (facundo) wrote :

Looks ok! I would *love* more test coverage here.

review: Approve
Revision history for this message
dobey (dobey) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'contrib/ck_states.py'
2--- contrib/ck_states.py 2009-07-16 13:55:16 +0000
3+++ contrib/ck_states.py 2009-08-12 19:05:14 +0000
4@@ -12,7 +12,7 @@
5 if isinstance(v, states.SyncDaemonState))
6
7 is_start = re.compile(r'(?:^START_|_START(?:_WITH_[^_]+Q)?$)').search
8-has_q = re.compile(r'_WITH_[^_]+Q$').search
9+has_q = re.compile(r'_WITH_([^_]+)Q$|^(?:START_)?WORKING_ON_(....)').search
10
11 all_trns = set(sum((state.transitions.values()
12 for state in all_states.values()), []))
13@@ -105,6 +105,31 @@
14 if only_in_other:
15 print 'missing from %s: %s' % \
16 (name, ", ".join(sorted(only_in_other)))
17+ # the tuple is SYS_META_QUEUE_WAITING, _DONE, and then _CONTENT_
18+ ok_trns = {'meta': ('meta', '', 'both', 'meta'),
19+ 'cont': ('both', 'cont', 'cont', ''),
20+ 'both': ('both', 'cont', 'both', 'meta'),
21+ '': ('meta', '', 'cont', ''),
22+ }
23+ if has_q(state.name):
24+ this_q = filter(None, has_q(state.name).groups())[0].lower()
25+ else:
26+ this_q = ''
27+ for i, evt in enumerate(['SYS_META_QUEUE_WAITING',
28+ 'SYS_META_QUEUE_DONE',
29+ 'SYS_CONTENT_QUEUE_WAITING',
30+ 'SYS_CONTENT_QUEUE_DONE']):
31+ trn = state.transitions.get(evt, None)
32+ if trn is None:
33+ continue
34+ if has_q(trn):
35+ that_q = filter(None, has_q(trn).groups())[0].lower()
36+ else:
37+ that_q = ''
38+ if ok_trns[this_q][i] != that_q:
39+ print '%s goes to %r on %r instead of %r' % (state.name,
40+ trn, evt,
41+ ok_trns[this_q][i])
42
43 # most states should handle the queue events
44 if not (isinstance(state, states.AQErrorState)
45
46=== modified file 'ubuntuone/syncdaemon/states.py'
47--- ubuntuone/syncdaemon/states.py 2009-08-06 12:09:42 +0000
48+++ ubuntuone/syncdaemon/states.py 2009-08-12 19:05:14 +0000
49@@ -315,7 +315,7 @@
50 SYS_META_QUEUE_WAITING='READING_WAITING_WITH_BOTHQ',
51 SYS_META_QUEUE_DONE='READING_WAITING_WITH_CONTQ',
52 SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_BOTHQ',
53- SYS_CONTENT_QUEUE_DONE='READING_WAITING_WITH_CONTQ',
54+ SYS_CONTENT_QUEUE_DONE='READING_WAITING_WITH_METAQ',
55 )
56
57 READING_WAITING_WITH_NETWORK = SyncDaemonState(
58@@ -490,7 +490,7 @@
59 'START_CONNECTING_WITH_METAQ', 'READY_WAITING_WITH_METAQ',
60 'READY_WAITING_WITH_METAQ', 'READY_FOR_NETWORK_WITH_METAQ',
61 'READY_WAITING_WITH_METAQ',
62- SYS_META_QUEUE_DONE='READY_WAITING_WITH_METAQ',
63+ SYS_META_QUEUE_DONE='READY_WAITING',
64 SYS_META_QUEUE_WAITING='READY_WAITING_WITH_METAQ',
65 SYS_CONTENT_QUEUE_WAITING='READY_WAITING_WITH_BOTHQ',
66 SYS_CONTENT_QUEUE_DONE='READY_WAITING_WITH_METAQ',
67@@ -502,7 +502,7 @@
68 'START_CONNECTING_WITH_CONTQ', 'READY_WAITING_WITH_CONTQ',
69 'READY_WAITING_WITH_CONTQ', 'READY_FOR_NETWORK_WITH_CONTQ',
70 'READY_WAITING_WITH_CONTQ',
71- SYS_META_QUEUE_WAITING='READY_WAITING_WITH_METAQ',
72+ SYS_META_QUEUE_WAITING='READY_WAITING_WITH_BOTHQ',
73 SYS_META_QUEUE_DONE='READY_WAITING_WITH_CONTQ',
74 SYS_CONTENT_QUEUE_WAITING='READY_WAITING_WITH_CONTQ',
75 SYS_CONTENT_QUEUE_DONE='READY_WAITING',

Subscribers

People subscribed via source and target branches