Skip to content

Commit

Permalink
openai: do not crash when dogstatsd not configured (#3361)
Browse files Browse the repository at this point in the history
  • Loading branch information
tlhunter committed Jul 6, 2023
1 parent 74f2127 commit b77eedd
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 16 deletions.
24 changes: 14 additions & 10 deletions packages/datadog-plugin-openai/src/services.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const DogStatsDClient = require('../../dd-trace/src/dogstatsd')
const { DogStatsDClient, NoopDogStatsDClient } = require('../../dd-trace/src/dogstatsd')
const ExternalLogger = require('../../dd-trace/src/external-logger/src')

const FLUSH_INTERVAL = 10 * 1000
Expand All @@ -10,15 +10,19 @@ let logger = null
let interval = null

module.exports.init = function (tracerConfig) {
metrics = new DogStatsDClient({
host: tracerConfig.dogstatsd.hostname,
port: tracerConfig.dogstatsd.port,
tags: [
`service:${tracerConfig.tags.service}`,
`env:${tracerConfig.tags.env}`,
`version:${tracerConfig.tags.version}`
]
})
if (tracerConfig.dogstatsd) {
metrics = new DogStatsDClient({
host: tracerConfig.dogstatsd.hostname,
port: tracerConfig.dogstatsd.port,
tags: [
`service:${tracerConfig.tags.service}`,
`env:${tracerConfig.tags.env}`,
`version:${tracerConfig.tags.version}`
]
})
} else {
metrics = new NoopDogStatsDClient()
}

logger = new ExternalLogger({
ddsource: 'openai',
Expand Down
2 changes: 1 addition & 1 deletion packages/datadog-plugin-openai/test/index.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const nock = require('nock')
const sinon = require('sinon')

const agent = require('../../dd-trace/test/plugins/agent')
const DogStatsDClient = require('../../dd-trace/src/dogstatsd')
const { DogStatsDClient } = require('../../dd-trace/src/dogstatsd')
const ExternalLogger = require('../../dd-trace/src/external-logger/src')
const Sampler = require('../../dd-trace/src/sampler')

Expand Down
35 changes: 35 additions & 0 deletions packages/datadog-plugin-openai/test/services.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
'use strict'

const services = require('../src/services')

describe('Plugin', () => {
describe('openai services', () => {
describe('when unconfigured', () => {
afterEach(() => {
services.shutdown()
})

it('dogstatsd does not throw', () => {
const service = services.init({
hostname: 'foo',
service: 'bar',
apiKey: 'my api key',
interval: 1000
})

service.metrics.increment('mykey')
service.logger.log('hello')
})

it('logger does not throw', () => {
const service = services.init({
hostname: 'foo',
service: 'bar',
interval: 1000
})

service.logger.log('hello')
})
})
})
})
15 changes: 14 additions & 1 deletion packages/dd-trace/src/dogstatsd.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,4 +143,17 @@ class DogStatsDClient {
}
}

module.exports = DogStatsDClient
class NoopDogStatsDClient {
gauge () { }

increment () { }

distribution () { }

flush () { }
}

module.exports = {
DogStatsDClient,
NoopDogStatsDClient
}
4 changes: 2 additions & 2 deletions packages/dd-trace/src/metrics.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
const { URL, format } = require('url')
const v8 = require('v8')
const os = require('os')
const Client = require('./dogstatsd')
const { DogStatsDClient } = require('./dogstatsd')
const log = require('./log')
const Histogram = require('./histogram')
const { performance } = require('perf_hooks')
Expand Down Expand Up @@ -67,7 +67,7 @@ module.exports = {
}))
}

client = new Client(clientConfig)
client = new DogStatsDClient(clientConfig)

time = process.hrtime()

Expand Down
2 changes: 1 addition & 1 deletion packages/dd-trace/test/dogstatsd.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ describe('dogstatsd', () => {
Client = proxyquire('../src/dogstatsd', {
'dgram': dgram,
'dns': dns
})
}).DogStatsDClient

httpData = []
statusCode = 200
Expand Down
4 changes: 3 additions & 1 deletion packages/dd-trace/test/metrics.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ suiteDescribe('metrics', () => {
}

metrics = proxyquire('../src/metrics', {
'./dogstatsd': Client
'./dogstatsd': {
DogStatsDClient: Client
}
})

config = {
Expand Down

0 comments on commit b77eedd

Please sign in to comment.