Мое приложение, созданное на базе графовой базы данных Gremlin, использует выражения графовых запросов для политик безопасности, очень похожие на следующие:
Код: Выделить всё
boolean hasPermission(String principal, String photoId) {
g.V(principal).hasLabel('CognitoUser')
.out('Authenticates').hasLabel('UserAccount')
.out('Owns').hasLabel('Photo')
.hasId(photoId)
.hasNext()
}
Меня не волнуют какие-либо значения или возвращаемые данные, кроме вопроса «существует ли совпадение?» Поскольку Neptune работает в режиме «транзакция на запрос», я ожидал, что они будут эффективными и быстро удалят мусор, но оказалось, что по какой-то причине они сохраняются неопределенно долго, что приводит к утечке памяти на экземпляре сервера.
При работе с Neptune, как мне структурировать запрос на существование, такой как этот, чтобы сервер очищал ресурсы, используемые для выполнения запроса, как только он возвращает ответ true/false?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... th-gremlin