Administrar operaciones de larga duración

En esta página se describe cómo administrar el ciclo de vida de una operación de larga duración de Cloud Spanner mediante las API de operaciones.

Las operaciones de larga duración son llamadas a métodos que pueden tardar una cantidad significativa de tiempo en completarse. Cloud Spanner crea operaciones de larga duración para varias acciones de bases de datos y de instancias. Un ejemplo es el método para crear una base de datos, projects.instances.databases.create. Cuando se llama al método projects.instances.databases.create, el servicio Cloud Spanner crea una operación de larga duración para hacer un seguimiento del estado de creación de la base de datos. Cloud Spanner proporciona APIs de operaciones que permiten verificar el estado de las operaciones de larga duración. También puedes enumerar operaciones de larga duración o cancelarlas, así como eliminar operaciones de instancia de larga duración.

Además de las API REST, estas fuentes generan operaciones de larga duración al crear bases de datos e instancias, actualizar esquemas y actualizar instancias:

Administra las operaciones de larga duración de Cloud Spanner con estos métodos:

Acción Operaciones de base de datos de larga duración Operaciones de instancia de larga duración
Cancelar una operación de larga duración cancel cancel
Eliminar una operación de larga duración No compatible delete
Obtener el estado de una operación de larga duración get get
Crear una lista de operaciones de larga duración list list

Operaciones de base de datos

Estas son operaciones de base de datos de larga duración.

Obtener el estado de una operación de base de datos de larga duración

Usa projects.instances.databases.operations.get para obtener el estado de una operación de base de datos de larga duración.

Este es un ejemplo de una respuesta de projects.instances.databases.create:

{
  "name": "projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateDatabaseMetadata",
    "database": "projects/[PROJECT_ID]/instances/test-instance/databases/example-db"
  }
}

El valor de name en la parte superior de la respuesta muestra que el servicio de Cloud Spanner ha creado una operación de base de datos de larga duración llamada projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206.

Si quieres obtener el estado de la operación de base de datos de larga duración, sigue estos pasos:

  1. Haz clic en projects.instances.databases.operations.get.
  2. En el campo nombre, introduce el nombre de la operación de la base de datos de larga duración como se muestra en la respuesta a projects.instances.databases.create o projects.instances.databases.updateDdl. Por ejemplo:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
    

    (Usa el nombre de operación que has recibido en lugar de este valor). También puedes recuperar el nombre de la operación de base de datos mediante una lista de operaciones de base de datos de larga duración.

  3. Haz clic en Ejecutar y observa la respuesta. Cuando se realiza una operación, el campo done se establece en true.

Si quieres sondear una operación de base de datos de ejecución prolongada, invoca continuamente el método projects.instances.databases.operations.get hasta que finalice la operación. Usa un retroceso entre cada petición de encuesta. Por ejemplo, encuesta cada 10 segundos.

Listar operaciones de bases de datos de larga duración

Usa projects.instances.databases.operations.list para enumerar las operaciones de bases de datos de larga duración.

  1. Haz clic en projects.instances.databases.operations.list.
  2. En el campo nombre, introduce lo siguiente:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations
    
  3. Haz clic en Ejecutar. La respuesta contiene las operaciones de base de datos de larga duración.

Cancelar una operación de base de datos de larga duración

Usa projects.instances.databases.operations.cancel para cancelar una operación de instancia de larga duración.

  1. Haz clic en projects.instances.databases.operations.cancel.
  2. En el campo del nombre, introduce el nombre de la operación de la base de datos de larga duración como se muestra en la respuesta de la operación de base de datos de larga duración. Por ejemplo:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
    

    (Usa el nombre de operación que has recibido en lugar de este valor). También puedes recuperar el nombre de la operación de base de datos mediante una lista de operaciones de base de datos de larga duración.

  3. Haz clic en Ejecutar.

Operaciones de instancias

Las siguientes son operaciones de instancia de larga duración.

Obtener el estado de una operación de instancia de larga duración

Usa projects.instances.operations.get para obtener el estado de una operación de instancia de larga duración.

Este es un ejemplo de una respuesta de projects.instances.create:

{
  "name": "projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceMetadata",
    "instance": {
      "name": "projects/[PROJECT_ID]/instances/test-instance",
      "config": "projects/[PROJECT_ID]/instanceConfigs/regional-us-central1",
      "displayName": "Test Instance",
      "nodeCount": 1,
      "state": "READY"
    },
    "startTime": "2017-04-24T22:45:41.130854Z"
  }
}

El valor de name en la parte superior de la respuesta muestra que el servicio de Cloud Spanner ha creado una operación de instancia de larga duración llamada projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e.

Si quieres obtener el estado de la operación de instancia de larga duración, sigue estos pasos:

  1. Haz clic en projects.instances.operations.get.
  2. En el campo nombre, introduce el nombre de la operación de instancia de larga ejecución como se muestra en la respuesta a projects.instances.create o projects.instances.patch. Por ejemplo:

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (Usa el nombre de operación que has recibido en lugar de este valor). También puedes recuperar el nombre de la operación de instancia mediante una lista de operaciones de instancia de larga duración.

  3. Haz clic en Ejecutar y observa la respuesta. Cuando se realiza una operación, el campo done se establece en true.

Si quieres realizar una encuesta de una operación de instancia de larga duración, invoca de forma continua el método projects.instances.operations.get hasta que finalice la operación. Usa un retroceso entre cada petición de encuesta. Por ejemplo, encuesta cada 10 segundos.

Enumerar operaciones de instancia de larga duración

Usa projects.instances.operations.list para enumerar operaciones de instancia de larga duración.

  1. Haz clic en projects.instances.operations.list.
  2. En el campo nombre, introduce lo siguiente:

    projects/[PROJECT_ID]/instances/test-instance/operations
    
  3. Haz clic en Ejecutar. La respuesta contiene las operaciones de instancia de larga duración.

Cancelar una operación de instancia de larga duración

Usa projects.instances.operations.cancel para cancelar una operación de instancia de larga duración.

  1. Haz clic en projects.instances.operations.cancel.
  2. En el campo nombre, introduce el nombre de la operación de instancia de larga duración como se muestra en la respuesta de operación de instancia de larga duración. Por ejemplo:

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (Usa el nombre de operación que has recibido en lugar de este valor). También puedes recuperar el nombre de la operación de instancia mediante una lista de operaciones de instancia de larga duración.

  3. Haz clic en Ejecutar.

Eliminar una operación de instancia de larga duración

Usa projects.instances.operations.delete para eliminar una operación de instancia de larga duración.

  1. Haz clic en projects.instances.operations.delete.
  2. En el campo nombre, introduce el nombre de la operación de instancia de larga duración como se muestra en la respuesta de operación de instancia de larga duración. Por ejemplo:

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (Usa el nombre de operación que has recibido en lugar de este valor). También puedes recuperar el nombre de la operación de instancia mediante una lista de operaciones de instancia de larga duración.

  3. Haz clic en Ejecutar.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Cloud Spanner Documentation