Mir

Merge lp:~albaguirre/mir/fix-1570327 into lp:mir

Proposed by Alberto Aguirre
Status: Merged
Approved by: Daniel van Vugt
Approved revision: no longer in the source branch.
Merged at revision: 3967
Proposed branch: lp:~albaguirre/mir/fix-1570327
Merge into: lp:mir
Diff against target: 27 lines (+17/-0)
1 file modified
src/server/scene/timeout_application_not_responding_detector.cpp (+17/-0)
To merge this branch: bzr merge lp:~albaguirre/mir/fix-1570327
Reviewer Review Type Date Requested Status
Daniel van Vugt Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+315290@code.launchpad.net

Commit message

Fix ApplicationNotRespondingDetection.failure_to_pong_is_noticed when running on a heavily loaded machine (LP: #1570327)

On a heavily loaded machine, the client session will fail to pong naturally, before the test disables responding to pings,
and before the test has a chance to register an observer.

ANR Observers should be notified of all currently unresponsive sessions when registering with the ANR detector.

Description of the change

Before this fix, you could replicate by running:

stress -c 100
../tools/detect_fd_leaks.bash "/usr/bin/valgrind" "--error-exitcode=1" "--trace-children=yes" "--leak-check=full" "--show-leak-kinds=definite" "--errors-for-leak-kinds=definite" "--track-fds=yes" "--num-callers=128" "--suppressions=<mir>/tools/valgrind_suppressions_generic" "--suppressions=<mir>/tools/valgrind_suppressions_glibc_2.23" "--suppressions=<mir>/tools/valgrind_suppressions_libhybris" bin/mir_acceptance_tests --gtest_filter=ApplicationNotRespondingDetection.failure_to_pong_is_noticed --gtest_repeat=1000

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3967
https://mir-jenkins.ubuntu.com/job/mir-ci/2813/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/3685
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3764
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3754
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3754
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3754
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3712
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3712/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3712
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3712/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3712
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3712/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3712
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3712/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3712
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3712/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3712
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3712/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/2813/rebuild

review: Approve (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Sure, give it a go.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/server/scene/timeout_application_not_responding_detector.cpp'
--- src/server/scene/timeout_application_not_responding_detector.cpp 2016-01-29 08:18:22 +0000
+++ src/server/scene/timeout_application_not_responding_detector.cpp 2017-01-21 05:44:27 +0000
@@ -117,6 +117,23 @@
117 std::shared_ptr<Observer> const& observer)117 std::shared_ptr<Observer> const& observer)
118{118{
119 observers.add(observer);119 observers.add(observer);
120
121 std::vector<Session const*> unresponsive_sessions;
122 {
123 std::lock_guard<std::mutex> lock{session_mutex};
124 for (auto const& session_pair : sessions)
125 {
126 if (session_pair.second->flagged_as_unresponsive)
127 {
128 unresponsive_sessions.push_back(session_pair.first);
129 }
130 }
131 }
132
133 for (auto const& unresponsive_session : unresponsive_sessions)
134 {
135 observer->session_unresponsive(unresponsive_session);
136 }
120}137}
121138
122void ms::TimeoutApplicationNotRespondingDetector::unregister_observer(139void ms::TimeoutApplicationNotRespondingDetector::unregister_observer(

Subscribers

People subscribed via source and target branches