Skip to content

Feature get all revision#23

Open
AleXKarasev wants to merge 12 commits intoExM:masterfrom
AleXKarasev:featureGetAllRevision
Open

Feature get all revision#23
AleXKarasev wants to merge 12 commits intoExM:masterfrom
AleXKarasev:featureGetAllRevision

Conversation

@AleXKarasev
Copy link

Сделал 3 комита:

  1. (0982b90) добавил обработку GET api/counter (admin, editor, anonymous) - возвращающий все каунтеры
  2. (092a1c7) поправил багу При создании счетчика возвращается 1. Должен возвращаться 0. #5 (новый каунтер возвращает 0). Поправил тест и добавил новый
  3. (14f8530) обновил пакеты Nuget до последней версии, убрал binginRedirect в конфиге

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Условия прохождения теста слишком широкие, т.к. в нем нет ни одного утверждения.

@ExM
Copy link
Owner

ExM commented May 10, 2015

После обновления пакетов приложение не запускается с ошибкой:

Не удалось загрузить файл или сборку "System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

@AleXKarasev
Copy link
Author

Странно у меня после обновления пакетов ошибки не возникало, попробую переклонировать репозиторий

	1. Добавил пагинацию для метода возвращающего все каунтеры
	2. Добавил блокировку на создание нового каунтера. Уйти от 2 запросов к БД не получилось. Проблему многопоточного доступа решил в коде сервиса
@AleXKarasev
Copy link
Author

Поправил замечания. Проблема с компиляцией не смоделировалась. Переклонировал реп, сделал резолв зависисмостей, все собралось без ошибок.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тест выполняет два обновления счетчика. Один за другим. В одном или разных потоках.
Уборка кода в try/catch приводит к потере стека в сообщениях NUnit.

Здесь надо добавить проверку, что номер ревизии увеличился на 2, т.к. просто отсутствие исключения не говорит о том что код делает, то что должен.

Кстати, имя счетчика каждый раз можно генерить новое (GUID) и быть всегда уверенным, что это отсутствующий счетчик без зачистки БД.

@ExM
Copy link
Owner

ExM commented May 12, 2015

Проблем с компиляцией нет. Проблемы с запуском приложения. Чтобы все загрузилось требуется добавить еще 3 редиректа:

  • System.Web.Http.Owin 5.2.3.0
  • System.Web.Http 5.2.3.0
  • Microsoft.Owin 3.0.1.0

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А если... клиент укажет pageSize = 2147483647 ?

@ExM
Copy link
Owner

ExM commented May 15, 2015

Напоминаю - до понедельника ожидаю получить исправления.

…ьтата. Количество потоков можно изменять константой
1. Сначала пробуем обновить с выключенным IsUpsert. Если приходит null значит записи с таким именем еще нет
2. Пытаемся вставить ее, если получилось возвращаем 0
3. Если при вставке произошла ошибка, то значит мы не успели вставить, запускаем опять обновление
…nject.Web.WebApi.OwinHost, Ninject.Web.Common.OwinHost), он собран со старыми версиями пакетов System.Web.Http.Owin 5.0.0.0, System.Web.Http 5.0.0.0, Microsoft.Owin Microsoft.Owin 3.0.0.0.

Поэтому что бы не было биндинг редиректов эти пакеты не должны быть выше 5.0.0 версии. Так же после этого появилась проблема с 6 версий Newtonsoft.Json. System.Net.Http.Formatting и System.Web.Http собраны под 4,5 версию. В итоге Newtonsoft.Json должна быть не выше 4.5. Сборка, тесты и запуск проходят успешно
…аботающих потоков, один из которых выполняет роль таймаута. Таймаут установил в 30 сек. Можно его вынести в параметры метода, но тогда можно будет опять сформировать запрос который приведёт к длительному выполнению метода. После окончания работы одного из потоков, посылается команда на отмену оставшегося.
…n для iis. И снова появился биндинг редирект из за старых сборок Ninject
…лась раньше всего, сделал ее в статическом конструкторе.

Таким образом удалось обновить все пакеты nuget до последней версии, кроме одного - System.Web.Http. При его резолве через код падает конструктор StandardKernel
В итоге все пакеты обновлены до последнего и остался один биндинг редирект
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Напрасно усложненный код. Должно быть так:

taskList.Add(_controller.Bumping(revName));

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Блокирующее ожидание в асинхронном методе.
В данном случае, если поток сюда доберется, то он тут зависнет.
Почему?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants