Commit e1eb8b6d by bachinger Committed by microkatz

Add pending sequence before sending the remote session task

#minor-release

PiperOrigin-RevId: 488885069
parent cfe36af8
...@@ -194,7 +194,8 @@ import org.checkerframework.checker.initialization.qual.UnderInitialization; ...@@ -194,7 +194,8 @@ import org.checkerframework.checker.initialization.qual.UnderInitialization;
task.run(iSession, result.getSequenceNumber()); task.run(iSession, result.getSequenceNumber());
} catch (RemoteException e) { } catch (RemoteException e) {
Log.w(TAG, "Cannot connect to the service or the session is gone", e); Log.w(TAG, "Cannot connect to the service or the session is gone", e);
result.set(LibraryResult.ofError(RESULT_ERROR_SESSION_DISCONNECTED)); sequencedFutureManager.setFutureResult(
result.getSequenceNumber(), LibraryResult.ofError(RESULT_ERROR_SESSION_DISCONNECTED));
} }
return result; return result;
} else { } else {
......
...@@ -340,15 +340,17 @@ import org.checkerframework.checker.nullness.qual.NonNull; ...@@ -340,15 +340,17 @@ import org.checkerframework.checker.nullness.qual.NonNull;
SequencedFutureManager.SequencedFuture<SessionResult> result = SequencedFutureManager.SequencedFuture<SessionResult> result =
sequencedFutureManager.createSequencedFuture( sequencedFutureManager.createSequencedFuture(
new SessionResult(SessionResult.RESULT_INFO_SKIPPED)); new SessionResult(SessionResult.RESULT_INFO_SKIPPED));
int sequenceNumber = result.getSequenceNumber();
if (addToPendingMaskingOperations) {
pendingMaskingSequencedFutureNumbers.add(sequenceNumber);
}
try { try {
int sequenceNumber = result.getSequenceNumber();
task.run(iSession, sequenceNumber); task.run(iSession, sequenceNumber);
if (addToPendingMaskingOperations) {
pendingMaskingSequencedFutureNumbers.add(sequenceNumber);
}
} catch (RemoteException e) { } catch (RemoteException e) {
Log.w(TAG, "Cannot connect to the service or the session is gone", e); Log.w(TAG, "Cannot connect to the service or the session is gone", e);
result.set(new SessionResult(SessionResult.RESULT_ERROR_SESSION_DISCONNECTED)); pendingMaskingSequencedFutureNumbers.remove(sequenceNumber);
sequencedFutureManager.setFutureResult(
sequenceNumber, new SessionResult(SessionResult.RESULT_ERROR_SESSION_DISCONNECTED));
} }
return result; return result;
} else { } else {
...@@ -2173,6 +2175,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; ...@@ -2173,6 +2175,13 @@ import org.checkerframework.checker.nullness.qual.NonNull;
// Never happens because future.setException will not be called. // Never happens because future.setException will not be called.
throw new IllegalStateException(e); throw new IllegalStateException(e);
} catch (TimeoutException e) { } catch (TimeoutException e) {
if (future instanceof SequencedFutureManager.SequencedFuture) {
int sequenceNumber =
((SequencedFutureManager.SequencedFuture<SessionResult>) future).getSequenceNumber();
pendingMaskingSequencedFutureNumbers.remove(sequenceNumber);
sequencedFutureManager.setFutureResult(
sequenceNumber, new SessionResult(SessionResult.RESULT_ERROR_UNKNOWN));
}
Log.w(TAG, "set/clearVideoSurface takes too long on the session side.", e); Log.w(TAG, "set/clearVideoSurface takes too long on the session side.", e);
// TODO(b/188888693): Let developers know the failure in their code. // TODO(b/188888693): Let developers know the failure in their code.
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment