RPC call to v.v received for connector 354 but no such connector could be f

Hi all,

i’m developing an application according to the MVP (Model-View-Presenter) approach. When an operation is taking a long time I want to show the user a model window which says ‘computing data’. After the operation is done I remove the window and the user can continue working. In the UI everything is fine, but in the server log I see a warning message. ‘RPC call to v.v received for connector 354 but no such connector could be found. Resynchronizing client.’

Does anybody have an idea how to get rid of this message?

The view and presenter look as follows:

View:[code]
@Override
public void showWindow() {
UI.getCurrent().access( new Runnable() {

    @Override
    public void run() {
        UI.getCurrent().addWindow( modelWindow);
        UI.getCurrent().push();
    }
});

}

@Override
public void closeWindow() {
UI.getCurrent().access( new Runnable() {

    @Override
    public void run() {
        UI.getCurrent().removeWindow( modelWindow);
        UI.getCurrent().push();
    }
});

}
[/code]

Presenter:

public void doSomething() {
    view.showWindow();
    Worker worker = new Worker() {

        @Override
        public void work() {
            // do some work and update UI
            view.closeWindow();
        }
    };
    worker.start();
}

I use the extra thread because otherwise the window is never shown. My vaadin version is 7.1.6.

This has the same root cause as
ticket #10625
. It’s a classic concurrency problem - the client sends an event to a component that’s removed on the server side but the client is not yet notified. The warning could be removed or at least downgraded in cases the server knows the client doesn’t know about the removal yet, but on the other hand that might hide real application-level bugs in some cases…