Search Issue Tracker

By Design

Votes

0

Found in

2018.4

2019.4

2019.4.6f1

2020.1

2020.2

Issue ID

1271977

Regression

No

[UnityWebRequest] Playfab async Task doesn't let the UnityWebRequest task to finish

WebRequest

-

Reproduction steps:
1. Open the attached project ("1271977Repro.zip")
2. Open "SampleScene" scene
3. Enter Play mode

Expected result: Multiple UnityWebRequests are called (one to Playfab and Postman)
Actual result: The postman call never comes back from “await”

Reproducible with: 2018.4.26f1, 2019.4.9f1, 2020.1.4f1, 2020.2.0a21

  1. Resolution Note:

    The issue happens because users implementation for awaiter is buggy.
    Users code relies on completed event of the AsyncOperation returned by UnityWebRequest. That event is fired when operation completes, however, you have to connect a handler to it before operation completes.
    In users code two operations are fired and then awaited, so UWR operation completes before it is awaited due to playfabTask taking longer. If playfab task is removed, UWR task can be awaited.

    Change UnityAsyncOperationAwaiter constructor as below fixes the issue for me (note, that Editor gets stuck in a loop after this change, since there is no exit from it).

    public UnityAsyncOperationAwaiter(IAsyncOperation operation)
    {
    if (operation.IsDone)
    {
    IsCompleted = true;
    _continuation?.Invoke();
    }
    else
    operation.Completed += OnOperationCompleted;
    }

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.