Google App Engine - блокировка? - PullRequest
       8

Google App Engine - блокировка?

0 голосов
/ 10 февраля 2010

Каждые несколько раз, когда я запускаю свое приложение на сервере разработки, оно кажется тупиковым. Я не уверен, что он также блокируется на рабочем сервере. Я приостанавливаю потоки и вижу, что один из них застрял в Permissions.implies: 162, который является началом блока synchronized.

Мой код выполняет следующие действия: на домашней странице он отправляет 5 запросов jquery одновременно моему сервлету InitServlet, который имеет метод service synchronized. Каждый раз с помощью метода обслуживания инициализируется другой компонент, каждому из которых требуется около 2 секунд для инициализации. Не имеет значения порядок, в котором потоки достигают метода обслуживания, и это происходит только 5 раз, во время запуска сервера, поэтому я думаю, что все в порядке для синхронизации метода службы.

Любые предложения о том, как исправить этот тупик, или кто-нибудь знает, если это просто ошибка с сервером разработки?

РЕДАКТИРОВАТЬ: выяснил, где происходит тупик, все еще не знаю, почему. Находясь внутри блокировки Permissions.implies, один поток вызывает Class.getDeclaredConstructors0 и никогда не возвращается из него. Другой поток ожидает получения блокировки в Permissions.implies. Первый поток, который зависает на getDeclaredConstructors0, выполняет инициализацию класса для стандартного класса PersistenceManagerFactory, взятого из примеров документов GAE.

Ответы [ 2 ]

1 голос
/ 11 февраля 2010

Вы не должны использовать запросы для инициализации своего приложения следующим образом: экземпляры приложения App Engine могут быть запущены или закрыты в любое время, и App Engine будет порождать несколько одновременных экземпляров для обработки запросов с любой скоростью, настолько разные Виртуальные машины могут получать различные подмножества вызовов инициализации.

1 голос
/ 11 февраля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...