teleport icon indicating copy to clipboard operation
teleport copied to clipboard

Slack plugin stumbles on transient network issue (or other delay)

Open programmerq opened this issue 4 months ago • 1 comments

Expected Behavior

The Slack Access Request plugin should successfully post messages to Slack channels when access requests are created or updated without any errors.

Current Behavior

When an access request is initiated, the Slack Access Request plugin fails to post messages to Slack, logging errors such as "context deadline exceeded" and "existing sentMessages is empty."

It looks like this might be due to a transient network error that the Slack plugin isn't able to recover from. It gets stuck in a loop waiting for plugin data to be populated, but that never happens, and then it reaches context deadline exceeded.

Bug Details

Teleport Version

  • 15.4.x

Recreation Steps

  1. Configure Teleport with the Slack Access Request plugin to send access request notifications to Slack channels.
  2. Create or update an access request that should trigger a Slack notification.
  3. Observe that the plugin fails to post the message, and error logs are generated.

This is a transient problem observed in a single customer environment so far. It may be necessary to introduce artificial timeouts when the plugin attempts to interact with the Teleport API, Slack API, or both.

Debug Logs

An excerpt of the relevant error logs:

INFO   Successfully posted messages channel_id:<CHANNEL_ID> message_id:1729190094.014719 request_id:4392ab79-bc9e-9b06-8d21-1b23e8259d2d request_op:put request_state:PENDING accessrequest/app.go:349
ERRO   Failed to post one or more messages error:[
ERROR REPORT:
Original Error: trace.aggregate Post &#34;https://slack.com/api/chat.postMessage&#34;: context deadline exceeded, Post &#34;https://slack.com/api/chat.postMessage&#34;: context deadline exceeded
Stack Trace:
	/go/src/github.com/gravitational/teleport/integrations/access/slack/bot.go:157 github.com/gravitational/teleport/integrations/access/slack.Bot.BroadcastAccessRequestMessage
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:341 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).broadcastAccessRequestMessages
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:282 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).onPendingRequest
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:199 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).handleAcessRequest
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:177 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).onWatcherEvent
	/go/src/github.com/gravitational/teleport/integrations/lib/watcherjob/watcherjob.go:278 github.com/gravitational/teleport/integrations/lib/watcherjob.job.eventLoop.job.eventFuncHandler.func1
	/go/src/github.com/gravitational/teleport/integrations/lib/process.go:213 github.com/gravitational/teleport/integrations/lib.jobFunc.DoJob
	/go/src/github.com/gravitational/teleport/integrations/lib/process.go:101 github.com/gravitational/teleport/integrations/lib.NewProcess.func2.1
	/opt/go/src/runtime/asm_amd64.s:1650 runtime.goexit
User Message: Post &#34;https://slack.com/api/chat.postMessage&#34;: context deadline exceeded, Post &#34;https://slack.com/api/chat.postMessage&#34;: context deadline exceeded] request_id:4392ab79-bc9e-9b06-8d21-1b23e8259d2d request_op:put request_state:PENDING accessrequest/app.go:352
ERRO   Failed to process request error:[
ERROR REPORT:
Original Error: *interceptors.RemoteError rpc error: code = DeadlineExceeded desc = context deadline exceeded
Stack Trace:
	/go/src/github.com/gravitational/teleport/api/client/client.go:1420 github.com/gravitational/teleport/api/client.(*Client).GetPluginData
	/go/src/github.com/gravitational/teleport/integrations/lib/plugindata/cas.go:172 github.com/gravitational/teleport/integrations/lib/plugindata.(*CompareAndSwap[...]).getPluginData
	/go/src/github.com/gravitational/teleport/integrations/lib/plugindata/cas.go:125 github.com/gravitational/teleport/integrations/lib/plugindata.(*CompareAndSwap[...]).Update
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:355 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).broadcastAccessRequestMessages
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:282 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).onPendingRequest
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:199 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).handleAcessRequest
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:177 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).onWatcherEvent
	/go/src/github.com/gravitational/teleport/integrations/lib/watcherjob/watcherjob.go:278 github.com/gravitational/teleport/integrations/lib/watcherjob.job.eventLoop.job.eventFuncHandler.func1
	/go/src/github.com/gravitational/teleport/integrations/lib/process.go:213 github.com/gravitational/teleport/integrations/lib.jobFunc.DoJob
	/go/src/github.com/gravitational/teleport/integrations/lib/process.go:101 github.com/gravitational/teleport/integrations/lib.NewProcess.func2.1
	/opt/go/src/runtime/asm_amd64.s:1650 runtime.goexit
User Message: rpc error: code = DeadlineExceeded desc = context deadline exceeded] request_id:4392ab79-bc9e-9b06-8d21-1b23e8259d2d request_op:put request_state:PENDING accessrequest/app.go:208
ERRO   Failed to process request error:[
ERROR REPORT:
Original Error: trace.aggregate existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, context deadline exceeded, rpc error: code = DeadlineExceeded desc = context deadline exceeded
Stack Trace:
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:331 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).onResolvedRequest
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:201 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).handleAcessRequest
	/go/src/github.com/gravitational/teleport/integrations/access/accessrequest/app.go:177 github.com/gravitational/teleport/integrations/access/accessrequest.(*App).onWatcherEvent
	/go/src/github.com/gravitational/teleport/integrations/lib/watcherjob/watcherjob.go:278 github.com/gravitational/teleport/integrations/lib/watcherjob.job.eventLoop.job.eventFuncHandler.func1
	/go/src/github.com/gravitational/teleport/integrations/lib/process.go:213 github.com/gravitational/teleport/integrations/lib.jobFunc.DoJob
	/go/src/github.com/gravitational/teleport/integrations/lib/process.go:101 github.com/gravitational/teleport/integrations/lib.NewProcess.func2.1
	/opt/go/src/runtime/asm_amd64.s:1650 runtime.goexit
User Message: existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, existing sentMessages is empty, context deadline exceeded, rpc error: code = DeadlineExceeded desc = context deadline exceeded] request_id:4392ab79-bc9e-9b06-8d21-1b23e8259d2d request_op:put request_state:APPROVED accessrequest/app.go:208

programmerq avatar Oct 17 '24 18:10 programmerq