Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Paginación y recogida de datos de CB con CPr #38

Closed
arcosa opened this issue Nov 11, 2022 · 4 comments
Closed

Paginación y recogida de datos de CB con CPr #38

arcosa opened this issue Nov 11, 2022 · 4 comments
Assignees

Comments

@arcosa
Copy link
Collaborator

arcosa commented Nov 11, 2022

Se ha detectado un funcionamiento anómalo en el mecanismo de paginación que se usa en la librería, para los casos en que el Context Broker tenga Context Providers registrados.

Para evitar ese problema, se va incorporar el parámetro skipForwarding en las recogidas de datos. Se añadirá un parámetro opcional skipForwarding, que por defecto está a true. Cuando está a true añade a las peticiones /v2/entities el options=skipForwarding y en false, no añade nada. De este modo, por defecto conseguimos que no influya los Context Providers registrados en la recogida de entidades.

@fgalan
Copy link
Contributor

fgalan commented Nov 11, 2022

Issue raiz en el repositorio del Context Broker: telefonicaid/fiware-orion#847

@arcosa arcosa self-assigned this Nov 15, 2022
@fgalan
Copy link
Contributor

fgalan commented Nov 15, 2022

Una posibilidad sería implementar un mecanismos genérico de paso de opciones en cualquier de las operaciones del CB:

  • send_batch
  • get_entities_page
  • get_entities
  • delete_entities

Seria algo así:

:param opcional options: Array de opciones que se incluirán en la llamada al CB. Por defecto, no se incluye ninguna opción.

En este caso concreto, el usuario utilizaria options: [ "skipForwarding" ] a la hora de llamar get_entities.

El único problema que veo es que "pise" lo que el usuario ponga ahí con el uso de options que hace la lógica actual. Creo que solo afecta a este punto:

req_url = f'{self.endpoint}/v2/op/update?options=flowControl'

Habría que definir un criterio en caso de colisión y creo que debería de tomar prioridad el parámetro. Es decir:

:param opcional options: Array de opciones que se incluirán en la llamada al CB. En el caso de que haya colisión entre las opciones de este array y las que use la librería por defecto, toma preferencia las que se definan en este parámetro. Por defecto, no se incluye ninguna opción.

@arcosa
Copy link
Collaborator Author

arcosa commented Nov 17, 2022

En el caso de colisión, lo que puedo hacer es agregar flowControl al listado de options que llegue, que puede no tenga opciones (y entonces quedaría options=flowControl o venga alguna opción a través del parámetro, y entonces añadiría a las otras opciones. Controlando que no acabe el options con dos "flowControl", porque se indique por ambos lados.

Luego la manera de comprobar/añadir options, la podemos replicar en todos las funciones que comentas.

@fgalan
Copy link
Contributor

fgalan commented Nov 23, 2022

PR #39

@arcosa arcosa closed this as completed Nov 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants