Проблема с неявными средствами доступа
Наша команда разработчиков недавно обнаружила, что мы получаем несколько ошибок при использовании неявного метода доступа get (person.firstName) вместо сгенерированного метода доступа get (person.getFirstName ()).Вот инструкции по воспроизведению ошибки:
- Создайте новое приложение ColdFusion со следующими файлами:
Application.cfc:
component {
this.invokeImplicitAccessor = true;
}
Person.cfc:
component accessors=true {
property firstName;
}
index.cfm:
local.person = new Person();
local.person.firstName = "Zachary";
for( local.i = 0; local.i lt 1000; local.i++ ) {
local.j = local.person.firstName;
}
index2.cfm:
local.person = new Person();
local.person.firstName = "Zachary";
for( local.i = 0; local.i lt 1000; local.i++ ) {
local.j = local.person.getFirstName();
}
Протестируйте index.cfm с помощью JMeter, используйте 2000 потоков, период разгона 10 с и число циклов 1 (план тестирования: https://pastebin.com/nBtpL4zP)
В наших тестах страница всегда дает сбойс тем же сообщением об ошибке:
Элемент PERSON.FIRSTNAME не определен в LOCAL.
Ошибка%, которую мы получаем с вышеуказанными настройками, обычно падает где-то между 8 и 10%, что означает, что 160-200 запросов из> 2000 запросов завершаются неудачно.
Когда index2.cfm тестируется с теми же настройками, мы не получаем никаких ошибок
Вот некоторые подробности о тестовой среде:
ОС: Windows Server 2016Стандартный ColdFusion: Adobe ColdFusion 2018, выпуск JMeter 5.0 (https://jmeter.apache.org/download_jmeter.cgi)
Кто-нибудь знает, почему это происходит? Существуют ли какие-то настройки ColdFusion, которые мы могли бы настроить? Пример приложения выше очень минимален, и мы неделать что-то особенное, поэтому я не вижу никаких причин, по которым неявные средства доступа должны давать сбои, особенно когда генерируемые средства доступа, кажется, проходят тот же тест без каких-либо проблем.
Мы ценим любую помощь или предложения о том, что попытаться получитьнеявные средства доступа работают.
EDIT: исправлено использование index2.cfm для использования метода get () вместо неявного средства доступа.
EDIT2:Полное сообщение об ошибке / страница: https://pastebin.com/budqiV1m
EDIT3: Я создал отчет об ошибке для этого: https://tracker.adobe.com/#/view/CF-4203997