Servlet throwing IllegalMonitorStateException

Hi!
I have an application setup with shiro and it is working fine. I’m new to Vaadin and wanted to rewrite the client code but now I have run in to problems and cannot solve it.

My simple UI (LoginUI) class throw and java.lang.IllegalMonitorStateException

public class LoginUI extends UI {

    @WebServlet(urlPatterns = "/*", name = "LoginUIServlet", asyncSupported = true)
    @VaadinServletConfiguration(ui = LoginUI.class, productionMode = false)
    public static class LoginUIServlet extends VaadinServlet {
    }

    @Override
    protected void init(final VaadinRequest vaadinRequest) {

        this.setSizeFull();
        final VerticalLayout layout = new VerticalLayout();
        layout.setSizeFull();

        final FormLayout form = new FormLayout();
        final TextField username = new TextField("Username");
        username.setIcon(FontAwesome.USER);
        username.setRequired(true);
        username.addValidator(new NullValidator("Must be given", false));
        form.addComponent(username);

        final TextField password = new TextField("Password");
        password.setIcon(FontAwesome.KEY);
        form.addComponent(password);

        final Button loginBtn = new Button("Login");
        loginBtn.addClickListener( e -> {

            Notification.show("Info:", "Add shiro stuff to do with login here.", Type.HUMANIZED_MESSAGE);

        });

        form.addComponent(loginBtn);
        form.setWidth("30%");
        layout.addComponent(form);
        layout.setComponentAlignment(form, Alignment.MIDDLE_CENTER);

        setContent(layout);

    }
}

Stacktrace:

2016-05-17 21:19:03 DEBUG http-bio-8080-exec-2 org.apache.shiro.session.mgt.DefaultSessionManager - Creating new EIS record for new session instance [org.apache.shiro.session.mgt.SimpleSession,id=null]

2016-05-17 21:19:03 DEBUG http-bio-8080-exec-2 org.apache.shiro.web.servlet.SimpleCookie - Added HttpServletResponse Cookie [appId=f133cda2b6bf4b1e099d0f892072cedd58cb1d02d94678ffa1d8bdfd97259424; Path=/; HttpOnly]

2016-05-17 21:19:03 DEBUG http-bio-8080-exec-6 org.apache.shiro.web.servlet.SimpleCookie - Found 'appId' cookie value [f133cda2b6bf4b1e099d0f892072cedd58cb1d02d94678ffa1d8bdfd97259424]

May 17, 2016 9:19:03 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [LoginUIServlet]
 in context with path [] threw exception [com.vaadin.server.ServiceException: java.lang.IllegalMonitorStateException]
 with root cause

java.lang.IllegalMonitorStateException
    at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:151)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1261)
    at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:457)
    at com.vaadin.server.VaadinService.unlockSession(VaadinService.java:652)
    at com.vaadin.server.VaadinService.findOrCreateVaadinSession(VaadinService.java:670)
    at com.vaadin.server.VaadinService.findVaadinSession(VaadinService.java:527)
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1403)
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:364)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
    at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
    at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

I have scratched my head for the last 2 hour and cannot figure out how to solve this thread problem. Any ideas?

Hi,

Are you able to attach a minimal working project so that I can reproduce the issue?