[
https://issues.apache.org/jira/browse/QPID-8717?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tomas Vavricka updated QPID-8717:
---------------------------------
Description:
REST API request using AVG aggregate function sometimes returns http 500 server
error to client and broker.log records ClassCastException.
{code:java}
curl -i -X POST -H "Content-Type: application/json" -H "Accept:
application/json" -d \
'{
"sql": "SELECT AVG(queueDepthMessages) AS AverageDepth FROM queue"
}' \
http://localhost:8080/api/latest/querybroker/broker {code}
Error stacktrace: [^ClassCastException.txt]
*Analysis*
The issue appears when an avg value is calculated on queues having same depth
and therefore returning an integer average value instead of double, e.g. when
all queues have zero depth.
*Implementation*
The change ensures that the result of the narrowing operation is explicitly
converted to double before returning, rather than returning a generic Number.
This improves type safety and guarantees the method always returns a Double as
intended.
was:
REST API request using AVG aggregate function sometimes returns http 500 server
error to client and broker.log records ClassCastException.
{code:java}
curl -i -X POST -H "Content-Type: application/json" -H "Accept:
application/json" -d \
'{
"sql": "SELECT AVG(queueDepthMessages) AS AverageDepth FROM queue"
}' \
http://localhost:8080/api/latest/querybroker/broker {code}
Error stacktrace: [^ClassCastException.txt]
*Analysis*
The issue appears when an avg value is calculated on queues having same depth
and therefore returning an integer average value instead of double, e.g. when
all queues have zero depth.
*Implementation*
The casting to double was added to the calculation of avg value.
> [Broker-J] Broker query engine may produce ClassCastException when using AVG
> function
> -------------------------------------------------------------------------------------
>
> Key: QPID-8717
> URL: https://issues.apache.org/jira/browse/QPID-8717
> Project: Qpid
> Issue Type: Bug
> Components: Broker-J
> Affects Versions: qpid-java-broker-10.0.0
> Reporter: Daniil Kirilyuk
> Priority: Minor
> Fix For: qpid-java-broker-10.0.1
>
> Attachments: ClassCastException.txt
>
>
> REST API request using AVG aggregate function sometimes returns http 500
> server error to client and broker.log records ClassCastException.
> {code:java}
> curl -i -X POST -H "Content-Type: application/json" -H "Accept:
> application/json" -d \
> '{
> "sql": "SELECT AVG(queueDepthMessages) AS AverageDepth FROM queue"
> }' \
> http://localhost:8080/api/latest/querybroker/broker {code}
> Error stacktrace: [^ClassCastException.txt]
> *Analysis*
> The issue appears when an avg value is calculated on queues having same depth
> and therefore returning an integer average value instead of double, e.g. when
> all queues have zero depth.
> *Implementation*
> The change ensures that the result of the narrowing operation is explicitly
> converted to double before returning, rather than returning a generic Number.
> This improves type safety and guarantees the method always returns a Double
> as intended.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]