Permalink
Comparing changes
Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also
.
Open a pull request
Create a new pull request by comparing changes across two branches. If you need to, you can also .
Choose a Base Repository
celery/celery
npilon/celery
66laps/celery
AdrianRibao/celery
CoolCold/celery
DXist/celery
FreakTheMighty/celery
GunioRobot/celery
HonzaKral/celery
Ignas/celery
Iroiso/celery
Mocramis/celery
OddBloke/celery
PiotrSikora/celery
Rundll/celery
SeanOC/celery
StefanKjartansson/celery
WoLpH/celery
a5an0/celery
aaronelliotross/celery
abecciu/celery
acdha/celery
ackdesha/celery
aclowes/celery
adamend/celery
akabos/celery
akipom/celery
alessandrod/celery
aleszoulek/celery
aliscott/celery
amplify-education/celery
andrewwatts/celery
anh/celery
ask/celery
avinash011/celery
axiak/celery
balboah/celery
berg/celery
bfirsh/celery
bmihelac/celery
bodbdigr/celery
bradjasper/celery
cangove/celery
catalanojuan/celery
clayg/celery
clvrobj/celery
coderanger/celery
colinhowe/celery
csinchok/celery
cupcicm/celery
cwebber/celery
d4n13lbc/celery
davidmiller/celery
davidstrauss/celery
dcramer/celery
dctrwatson/celery
dhepper/celery
djfroofy/celery
dln/celery
dmarkey/celery
dmishe/celery
dpwhite2/celery
drx/celery
dtran320/celery
e98cuenc/celery
eka/celery
eldondev/celery
enlavin/celery
errord/celery
evildmp/celery
f0rk/celery
fberger/celery
fireantology/celery
flaper87/celery
frac/celery
fredj/celery
gcachet/celery
georgedorn/celery
gregglind/celery
greghaskins/celery
harmv/celery
hekevintran/celery
heyman/celery
hghazal/celery
iancmcc/celery
idan/celery
idealopamp/celery
imankulov/celery
ionelmc/celery
ivirabyan/celery
jasonbaker/celery
jbochi/celery
jcsp/celery
jerem/celery
jiangzhonghui/celery
jkozera/celery
jonozzz/celery
jpellerin/celery
jsaxon-cars/celery
jterrace/celery
jude/celery
juil/celery
justinlynn/celery
kanu/celery
kenshinx/celery
kkung/celery
kmike/celery
kuangc/celery
kultus/celery
kyphan/celery
leobantech/celery
lht/celery
liansc/celery
lifeeth/celery
lookfwd/celery
lorenhearsay/celery
lstipakov/celery
luciotorre/celery
macro/celery
marcinkuzminski/celery
markferrer/celery
martinmelin/celery
mattjmorrison/celery
mattlong/celery
mattwilliamson/celery
maxbelanger/celery
maximbo/celery
metzlar/celery
mgmtech/celery
mher/celery
miracle2k/celery
mitar/celery
mitsuhiko/celery
mlavin/celery
molotov/celery
mootpointer/celery
mthurman/celery
mulka/celery
mumrah/celery
netoxico/celery
nibrahim/celery
nik-cars/celery
offbyone/celery
ojii/celery
omgbebebe/celery
orb/celery
paltman/celery
pankajmore/celery
pcardune/celery
peplin/celery
pmarti/celery
prabhat246/celery
psnj/celery
public/celery
pvanderlinden/celery
r4vi/celery
rahulkmr/celery
rferolino/celery
rgaiser/celery
richleland/celery
rlotun/celery
robfitz/celery
rogerhu/celery
runeh/celery
rwillmer/celery
sagematic/celery
sangramanand/celery
sarang4/celery
sbshetty01/celery
screeley/celery
sebleier/celery
sensisoft/celery
shockflash/celery
simonw/celery
skoczen/celery
soymo/celery
steeve/celery
stratoukos/celery
sverrejoh/celery
tarequeh/celery
tayfun/celery
tbarbugli/celery
thaingo/celery
tigrang/celery
tkosmynka/celery
tobych/celery
tomellis/celery
trepca/celery
tsugliani/celery
tswicegood/celery
turingmachine/celery
tutumcloud/celery
ulricheck/celery
vbabiy/celery
vkryachko/celery
washeck/celery
wdmx666/celery
westurner/celery
winhamwr/celery
yrik/celery
zen4ever/celery
Nothing to show
Choose a base branch
1.0-archived
2.0-archived
2.1-archived
2.2-archived
2.3-archived
2.4-archived
2.5-archived
3.0-archived
3.1
4.0-experiments
4.0-using-consumer-mixin
4.0
5.0-devel
asyncmove
asyncres
asyncres2
bootsteps_refactor
c31-lockfree-rate-limits
c32-dynamic
callbacks
canvas-generator
chain-error-handler-fix
chain_unroll
chord-error-results
chord-to-chain
deadlockdetection
debug-travis-hang
dry-fixes
dynamic
fix-3885
gh-pages
integration-stage
integration-tests-skip-if-chords-are-not-allowed
master
optimize_groups
preload-pytest-cov
redis-pubsub-result
redis_join
speedup-build
spelling-fixes
synack
test-with-recent-pypy
var.ci
widelane
workhorse-pool
Nothing to show
Choose a Head Repository
celery/celery
npilon/celery
66laps/celery
AdrianRibao/celery
CoolCold/celery
DXist/celery
FreakTheMighty/celery
GunioRobot/celery
HonzaKral/celery
Ignas/celery
Iroiso/celery
Mocramis/celery
OddBloke/celery
PiotrSikora/celery
Rundll/celery
SeanOC/celery
StefanKjartansson/celery
WoLpH/celery
a5an0/celery
aaronelliotross/celery
abecciu/celery
acdha/celery
ackdesha/celery
aclowes/celery
adamend/celery
akabos/celery
akipom/celery
alessandrod/celery
aleszoulek/celery
aliscott/celery
amplify-education/celery
andrewwatts/celery
anh/celery
ask/celery
avinash011/celery
axiak/celery
balboah/celery
berg/celery
bfirsh/celery
bmihelac/celery
bodbdigr/celery
bradjasper/celery
cangove/celery
catalanojuan/celery
clayg/celery
clvrobj/celery
coderanger/celery
colinhowe/celery
csinchok/celery
cupcicm/celery
cwebber/celery
d4n13lbc/celery
davidmiller/celery
davidstrauss/celery
dcramer/celery
dctrwatson/celery
dhepper/celery
djfroofy/celery
dln/celery
dmarkey/celery
dmishe/celery
dpwhite2/celery
drx/celery
dtran320/celery
e98cuenc/celery
eka/celery
eldondev/celery
enlavin/celery
errord/celery
evildmp/celery
f0rk/celery
fberger/celery
fireantology/celery
flaper87/celery
frac/celery
fredj/celery
gcachet/celery
georgedorn/celery
gregglind/celery
greghaskins/celery
harmv/celery
hekevintran/celery
heyman/celery
hghazal/celery
iancmcc/celery
idan/celery
idealopamp/celery
imankulov/celery
ionelmc/celery
ivirabyan/celery
jasonbaker/celery
jbochi/celery
jcsp/celery
jerem/celery
jiangzhonghui/celery
jkozera/celery
jonozzz/celery
jpellerin/celery
jsaxon-cars/celery
jterrace/celery
jude/celery
juil/celery
justinlynn/celery
kanu/celery
kenshinx/celery
kkung/celery
kmike/celery
kuangc/celery
kultus/celery
kyphan/celery
leobantech/celery
lht/celery
liansc/celery
lifeeth/celery
lookfwd/celery
lorenhearsay/celery
lstipakov/celery
luciotorre/celery
macro/celery
marcinkuzminski/celery
markferrer/celery
martinmelin/celery
mattjmorrison/celery
mattlong/celery
mattwilliamson/celery
maxbelanger/celery
maximbo/celery
metzlar/celery
mgmtech/celery
mher/celery
miracle2k/celery
mitar/celery
mitsuhiko/celery
mlavin/celery
molotov/celery
mootpointer/celery
mthurman/celery
mulka/celery
mumrah/celery
netoxico/celery
nibrahim/celery
nik-cars/celery
offbyone/celery
ojii/celery
omgbebebe/celery
orb/celery
paltman/celery
pankajmore/celery
pcardune/celery
peplin/celery
pmarti/celery
prabhat246/celery
psnj/celery
public/celery
pvanderlinden/celery
r4vi/celery
rahulkmr/celery
rferolino/celery
rgaiser/celery
richleland/celery
rlotun/celery
robfitz/celery
rogerhu/celery
runeh/celery
rwillmer/celery
sagematic/celery
sangramanand/celery
sarang4/celery
sbshetty01/celery
screeley/celery
sebleier/celery
sensisoft/celery
shockflash/celery
simonw/celery
skoczen/celery
soymo/celery
steeve/celery
stratoukos/celery
sverrejoh/celery
tarequeh/celery
tayfun/celery
tbarbugli/celery
thaingo/celery
tigrang/celery
tkosmynka/celery
tobych/celery
tomellis/celery
trepca/celery
tsugliani/celery
tswicegood/celery
turingmachine/celery
tutumcloud/celery
ulricheck/celery
vbabiy/celery
vkryachko/celery
washeck/celery
wdmx666/celery
westurner/celery
winhamwr/celery
yrik/celery
zen4ever/celery
Nothing to show
Choose a head branch
1.0-archived
2.0-archived
2.1-archived
2.2-archived
2.3-archived
2.4-archived
2.5-archived
3.0-archived
3.1
4.0-experiments
4.0-using-consumer-mixin
4.0
5.0-devel
asyncmove
asyncres
asyncres2
bootsteps_refactor
c31-lockfree-rate-limits
c32-dynamic
callbacks
canvas-generator
chain-error-handler-fix
chain_unroll
chord-error-results
chord-to-chain
deadlockdetection
debug-travis-hang
dry-fixes
dynamic
fix-3885
gh-pages
integration-stage
integration-tests-skip-if-chords-are-not-allowed
master
optimize_groups
preload-pytest-cov
redis-pubsub-result
redis_join
speedup-build
spelling-fixes
synack
test-with-recent-pypy
var.ci
widelane
workhorse-pool
Nothing to show
- 1 commit
- 2 files changed
- 0 commit comments
- 1 contributor
Commits on Jul 05, 2018
Unified
Split
Showing
with
47 additions
and 1 deletion.
- +10 −0 t/integration/tasks.py
- +37 −1 t/integration/test_canvas.py
View
10
t/integration/tasks.py
| @@ -178,3 +178,13 @@ def build_chain_inside_task(self): | ||
| ) | ||
| result = test_chain() | ||
| return result | ||
| @shared_task | ||
| def fail(*args): | ||
| raise Exception('Task expected to fail') | ||
| @shared_task | ||
| def chord_error(args): | ||
| return args | ||
View
38
t/integration/test_canvas.py
| @@ -12,7 +12,8 @@ | ||
| from .tasks import (add, add_chord_to_chord, add_replaced, add_to_all, | ||
| add_to_all_to_chord, build_chain_inside_task, collect_ids, | ||
| delayed_sum, delayed_sum_with_soft_guard, identity, ids, | ||
| print_unicode, redis_echo, second_order_replace1, tsum) | ||
| print_unicode, redis_echo, second_order_replace1, tsum, | ||
| fail, chord_error) | ||
| TIMEOUT = 120 | ||
| @@ -521,3 +522,38 @@ def assert_parentids_chord(self, res, expected_root_id): | ||
| assert value == 1 | ||
| assert root_id == expected_root_id | ||
| assert parent_id is None | ||
| def test_chord_on_error(self, manager): | ||
| from celery import states | ||
| # Run the chord and wait for the error callback to finish. | ||
| c1 = chord( | ||
| header=[add.s(1, 2), add.s(3, 4), fail.s()], | ||
| body=print_unicode.s('This should not be called').on_error( | ||
| chord_error.s()), | ||
| ) | ||
| res = c1() | ||
| res.get(propagate=False) | ||
| res.children[0].children[0].get(propagate=False) | ||
| # Use the error callback's result to find the failed task. | ||
| error_callback_result = AsyncResult(res.children[0].children[0].result) | ||
| failed_task_id = error_callback_result.result.args[0].split()[3] | ||
| # Use new group_id result metadata to get group ID. | ||
| failed_task_result = AsyncResult(failed_task_id) | ||
| original_group_id = failed_task_result._get_task_meta()['group_id'] | ||
| # Use group ID to get preserved group result. | ||
| backend = fail.app.backend | ||
| j_key = backend.get_key_for_group(original_group_id, '.j') | ||
| redis_connection = get_redis_connection() | ||
| chord_results = [backend.decode(t) for t in | ||
| redis_connection.lrange(j_key, 0, 3)] | ||
| # Validate group result | ||
| assert [cr[3] for cr in chord_results if cr[2] == states.SUCCESS] == \ | ||
| [3, 7] | ||
| assert len([cr for cr in chord_results if cr[2] != states.SUCCESS] | ||
| ) == 1 | ||