googleapis / googleapis/google-cloud-node
Cloud Tasks Client throws 4 DEADLINE_EXCEEDED
- Lingua principale
- TypeScript
- Stelle
- 3.2k
- Fork
- 712
- Merge medio
- 2g 9h
- PR unite (30g)
- 104
Descrizione
We're using cloud tasks to enqueue jobs. This is happening for a few jobs that rely on cloud-tasks, the one i'll focus on writes somewhere between 10-25 tasks it creates by reading a file. 10-20% of the time, this job will fail because the cloud tasks client throws with `4 DEADLINE_EXCEEDED`.
I've read through the issue [here](https://github.com/googleapis/nodejs-tasks/issues/580) but it seems that was closed over a year ago now and I'm running into this issue with the latest version of cloud tasks (also ran into it before upgrading using major version 3 of the package).
#### Environment details
- google-cloud/tasks
- Deployed to Gen2 cloud function
- Node 18
- Yarn 1.22.19
#### Steps to reproduce
Below is my code I'm using to add new tasks
```
import { v2beta3 } from "@google-cloud/tasks"
const { GCP_PROJECT } = process.env
if (!GCP_PROJECT) {
throw new Error("GCP_PROJECT is required")
}
const cloudServiceAccountEmail = process.env.CLOUD_TASK_SERVICE_ACCT_EMAIL;
class CloudTasksClientWrapper {
private client: v2beta3.CloudTasksClient
constructor() {
this.client = new v2beta3.CloudTasksClient()
}
async createHttpTaskWithToken({
queueName,
payload,
url,
location = "us-central1",
}:
{
queueName: string
payload: string
url: string
location?: string
}) {
const parent = this.client.queuePath(GCP_PROJECT!, location, queueName)
const body = Buffer.from(payload).toString("base64")
const task = {
httpRequest: {
httpMethod: "POST" as const,
url,
oidcToken: {
serviceAccountEmail: cloudServiceAccountEmail,
audience: new URL(url).origin,
},
headers: {
"Content-Type": "application/json",
},
body,
},
}
// Send create task request.
const [response] = await this.client.createTask(
{ parent, task },
{ timeout: 5000 }
)
return response
}
}
export { CloudTasksClientWrapper }
```
Then I call `createHttpTaskWithToken` from various jobs, for example, after reading every 50 lines from a 1000-line csv, I'll call this function with a task to process those 50 lines.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia con la riproduzione fornita di CloudTasksClientWrapper.createHttpTaskWithToken e analizza la chiamata a createTask, incluso il suo timeout di 5 secondi, con Node 18 e nell’ambiente Gen2 descritto. Riproduci l’errore intermittente DEADLINE_EXCEEDED durante la creazione di più task, quindi determina il comportamento rilevante del client e documenta una risoluzione verificabile o un test di regressione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- google-cloud, node.js, typescript
- Ambito
- api, backend, cloud
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100