Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
No se pueden realizar transacciones en AWS Neptune utilizando un AWS Lambda escrito en javascript

Necesito usar transacciones gremlin usando la biblioteca npm gremlin . Revisé la sintaxis de transacción estándar mencionada para javascript en la documentación de tinkerpop: https://tinkerpop.apache.org/docs/current/reference/#gremlin-javascript-transactions . Estoy usando AWS Lambda para lo mismo. Mantengo 1024 MB de RAM con un tiempo de espera de 10 segundos en mi lambda. Pero mi lambda está agotando el tiempo todo el tiempo.

La siguiente es mi función lambda:

 'use strict'; const gremlin = require('gremlin'); const { t: { id } } = gremlin.process; exports.handler = async (event, context) => { const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection; const g = gremlin.process.traversal().withRemote(new DriverRemoteConnection(`<ws_graph_url>:8182/gremlin`,{})); console.log('initializing the transaction'); const tx = g.tx(); console.log('beginning of the transaction'); const gtx = tx.begin(); try { let id1 = 'kanhai-test-tx-1', id2 = 'kanhai-test-tx-2'; console.log('before ops'); await Promise.all([ gtx.addV('TX1').property(id, id1).iterate(), gtx.addV('TX2').property(id, id2).iterate(), ]); console.log('after tx ops'); console.log('before tx commit'); await tx.commit(); console.log('after tx commit'); } catch(err) { console.error('Failed to complete the transaction:', err); tx.rollback(); } };

La lambda se agota durante la ejecución de Promise.all() que involucra las 2 operaciones de creación.

Si elimino la await de todos los lugares, mi lambda se ejecuta con éxito en menos de un segundo y regresa con éxito. Todas las líneas de registro se imprimen como se esperaba. Pero mis operaciones no se realizan porque no las he esperado.

Pero cuando mantengo la await en todas partes donde he mencionado, la última línea de registro que se imprime antes de que se agote el tiempo de espera de mi lambda es "antes de las operaciones", que es la línea de registro justo antes de mis operaciones de escritura que están dentro de Promise.all .

Esta lambda se ejecuta en la misma VPC donde está alojado mi clúster de Neptune. Probé varias consultas sin las transacciones y funcionan correctamente a través de gremlin y OpenCypher a través de HTTP.

No he encontrado ninguna documentación concreta que pueda ayudarme en la ejecución paso a paso de una transacción exitosa usando javascript. Cualquier ayuda sería apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La compatibilidad con transacciones de bytecode, g.tx() , etc. requiere una versión de servidor TinkerPop de 3.5.x. La primera versión de Neptune compatible con esa versión es la versión 1.1.1.0 (19 de abril de 2022). Es probable que esa sea la razón por la que su Lambda no está haciendo nada, ya que el servidor no es compatible g.tx() en el nivel de Neptune 1.0.5.1. Esa versión anterior del motor Neptune está en el nivel TinkerPop 3.4.11.

Las notas de la versión 1.1.1.0 del motor Neptune están aquí: https://docs.aws.amazon.com/neptune/latest/userguide/engine-releases-1.1.1.0.html

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda