Skip to content

Commit 64db160

Browse files
committed
Improve multiple assign errors
1 parent 7fdc1dd commit 64db160

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

lib/concurrent/edge/future.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ def complete(raise_on_reassign = true)
292292
synchronize { ns_broadcast } if @Waiters.clear
293293
call_callbacks
294294
else
295-
Concurrent::MultipleAssignmentError.new('multiple assignment') if raise_on_reassign
295+
Concurrent::MultipleAssignmentError.new('Event can be completed only once') if raise_on_reassign
296296
return false
297297
end
298298
self
@@ -622,7 +622,12 @@ def complete(success, value, reason, raise_on_reassign = true)
622622
synchronize { ns_broadcast }
623623
call_callbacks new_state
624624
else
625-
raise reason || Concurrent::MultipleAssignmentError.new('multiple assignment') if raise_on_reassign
625+
if raise_on_reassign
626+
log ERROR, 'Edge::Future', reason if reason # print otherwise hidden error
627+
raise(Concurrent::MultipleAssignmentError.new(
628+
"Future can be completed only once. Current result is #{result}, " +
629+
"trying to set #{[success, value, reason]}"))
630+
end
626631
return false
627632
end
628633
self

0 commit comments

Comments
 (0)