newrelic / nri-mssql

New Relic Infrastructure Mssql Integration
MIT License
8 stars 18 forks source link

Int overflow for integrated metric instance.diskInBytes #153

Closed david-garcia-garcia closed 2 months ago

david-garcia-garcia commented 5 months ago

Description

From the integration log:

Could not execute instance query: sql: Scan error on column index 0, name \"total_disk_space\": converting driver.Value type int64 (\"21339549696\") to a int: value out of range" integration_name=nri-mssql role=mssql runner_uid=e023e0872a

Taking a look at the source code, this is coming clearly from an int overflow here:

        query: `SELECT Sum(total_bytes) AS total_disk_space FROM (
            SELECT DISTINCT
            dovs.volume_mount_point,
            dovs.available_bytes available_bytes,
            dovs.total_bytes total_bytes
            FROM sys.master_files mf WITH (nolock)
            CROSS apply sys.Dm_os_volume_stats(mf.database_id, mf.file_id) dovs
            ) drives`,
        dataModels: &[]struct {
            TotalDiskSpace *int `db:"total_disk_space" metric_name:"instance.diskInBytes" source_type:"gauge"`
        }{},

Expected Behavior

No error

Steps to Reproduce

Running this inside a windows container, where total disk space is 20GB (21339549696 bytes).

image

Your Environment

MSSQL Server 2022 CU12 inside a windows container.

Additional context

For Maintainers Only or Hero Triaging this bug

workato-integration[bot] commented 5 months ago

https://new-relic.atlassian.net/browse/NR-254437