Следующий случайный вызов сначала getParentCustomers
или getAccountManagers
. Когда это происходит, это работает нормально. Однако, кого бы ни называли вторым, он пропускает null
. Ни один из этих методов никак не изменяет входящие значения. Я предполагаю, что есть что-то в контексте, что они вызываются из-за того, что оригинальный указатель на response.salesChannels
теряется между задачами.
Map response = [
salesChannels: null,
accountManagers: null,
parentCustomers: null,
isrs: null,
operatingUnits: null,
businessUnits: null
]
def t1 = task {
response.salesChannels = salesChannelApiService.get(salesChannel)
def t1a = task {
response.parentCustomers = salesChannelTransformService.getParentCustomers(response.salesChannels)
}
def t1b = task {
response.accountManagers = salesChannelTransformService.getAccountManagers(response.salesChannels)
}
waitAll([t1a, t1b])
}
def t2 = task {
//... other stuff
}
def t3 = task {
//... other stuff
}
waitAll([t1, t2, t3])
return response
Я даже пытался изменить внутреннее устройство, чтобы вместо этого использовать onComplete
.
...
onComplete([task {
return salesChannelApiService.get(salesChannel)
}], { salesChannels ->
response.salesChannels = salesChannels
def t1a = task {
response.parentCustomers = salesChannelTransformService.getParentCustomers(salesChannels)
}
def t1b = task {
response.accountManagers = salesChannelTransformService.getAccountManagers(salesChannels)
}
waitAll([t1a, t1b])
})
...
Однако я все равно получаю тот же результат.
ПРИМЕЧАНИЕ: это тоже случайно. Иногда это работает нормально - передача одного и того же списка обоим методам. Но когда он ломается, то всегда тот, который запускает секунду.
Есть мысли по этому поводу?