jaaql-middleware-python 5.3.13__tar.gz → 5.3.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/PKG-INFO +1 -1
  2. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/constants.py +1 -1
  3. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/interpreter/interpret_jaaql.py +10 -3
  4. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/model.py +9 -0
  5. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql_middleware_python.egg-info/PKG-INFO +1 -1
  6. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/LICENSE.txt +0 -0
  7. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/README.md +0 -0
  8. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/__init__.py +0 -0
  9. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/config/__init__.py +0 -0
  10. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/config/config-docker.ini +0 -0
  11. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/config/config-test.ini +0 -0
  12. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/config/config.ini +0 -0
  13. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/config_constants.py +0 -0
  14. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/db/__init__.py +0 -0
  15. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/db/db_interface.py +0 -0
  16. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/db/db_pg_interface.py +0 -0
  17. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/db/db_utils.py +0 -0
  18. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/db/db_utils_no_circ.py +0 -0
  19. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/documentation/__init__.py +0 -0
  20. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/documentation/documentation_internal.py +0 -0
  21. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/documentation/documentation_public.py +0 -0
  22. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/documentation/documentation_shared.py +0 -0
  23. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/email/__init__.py +0 -0
  24. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/email/email_manager.py +0 -0
  25. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/email/email_manager_service.py +0 -0
  26. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/email/patch_ems.py +0 -0
  27. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/exceptions/__init__.py +0 -0
  28. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/exceptions/custom_http_status.py +0 -0
  29. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/exceptions/http_status_exception.py +0 -0
  30. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/exceptions/jaaql_interpretable_handled_errors.py +0 -0
  31. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/exceptions/not_yet_implement_exception.py +0 -0
  32. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/generated_constants.py +0 -0
  33. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/interpreter/__init__.py +0 -0
  34. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/jaaql.py +0 -0
  35. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/migrations/__init__.py +0 -0
  36. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/migrations/migrations.py +0 -0
  37. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/__init__.py +0 -0
  38. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/base_controller.py +0 -0
  39. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/base_model.py +0 -0
  40. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/controller.py +0 -0
  41. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/controller_interface.py +0 -0
  42. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/exception_queries.py +0 -0
  43. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/generated_queries.py +0 -0
  44. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/handmade_queries.py +0 -0
  45. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/model_interface.py +0 -0
  46. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/mvc/response.py +0 -0
  47. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/openapi/__init__.py +0 -0
  48. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/openapi/swagger_documentation.py +0 -0
  49. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/patch.py +0 -0
  50. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/01.install_domains.generated.sql +0 -0
  51. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/02.install_super_user.exceptions.sql +0 -0
  52. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/03.install_super_user.handwritten.sql +0 -0
  53. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/04.install_jaaql_data_structures.generated.sql +0 -0
  54. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/05.install_static_data.generated.sql +0 -0
  55. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/06.install_jaaql.exceptions.sql +0 -0
  56. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/ZZZZ.generated_functions_views_and_permissions.sql +0 -0
  57. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/ZZZZ.reset_references.sql +0 -0
  58. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/scripts/swagger_template.html +0 -0
  59. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/services/__init__.py +0 -0
  60. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/services/cached_canned_query_service.py +0 -0
  61. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/services/migrations_manager_service.py +0 -0
  62. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/services/patch_mms.py +0 -0
  63. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/services/patch_shared_var_service.py +0 -0
  64. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/services/shared_var_service.py +0 -0
  65. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/__init__.py +0 -0
  66. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/bootstrap_secrets.py +0 -0
  67. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/cron.py +0 -0
  68. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/crypt_utils.py +0 -0
  69. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/options.py +0 -0
  70. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/utils.py +0 -0
  71. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/utils_no_project_imports.py +0 -0
  72. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql/utilities/vault.py +0 -0
  73. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql_middleware_python.egg-info/SOURCES.txt +0 -0
  74. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql_middleware_python.egg-info/dependency_links.txt +0 -0
  75. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql_middleware_python.egg-info/requires.txt +0 -0
  76. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/jaaql_middleware_python.egg-info/top_level.txt +0 -0
  77. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/setup.cfg +0 -0
  78. {jaaql_middleware_python-5.3.13 → jaaql_middleware_python-5.3.15}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaaql-middleware-python
3
- Version: 5.3.13
3
+ Version: 5.3.15
4
4
  Summary: The jaaql package, allowing for rapid development and deployment of RESTful HTTP applications
5
5
  Home-page: https://github.com/JAAQL/JAAQL-middleware-python
6
6
  Author: Software Quality Measurement and Improvement bv
@@ -218,5 +218,5 @@ ROLE__dba = "dba"
218
218
 
219
219
  PROTOCOL__postgres = "postgresql://"
220
220
 
221
- VERSION = "5.3.13"
221
+ VERSION = "5.3.15"
222
222
 
@@ -384,14 +384,21 @@ class InterpretJAAQL:
384
384
  requires_dba_check=check_required and canned_query_service is not None)
385
385
  wait_hook = None
386
386
  check_required = False
387
- self.db_interface.execute_query_fetching_results(conn, "SAVEPOINT __jaaql_provenance")
387
+ # In autocommit mode a failed statement cannot poison a transaction, and
388
+ # SAVEPOINT itself is rejected outside a transaction block
389
+ provenance_savepoint = False
388
390
  try:
391
+ if not getattr(conn, "autocommit", False):
392
+ self.db_interface.execute_query_fetching_results(conn, "SAVEPOINT __jaaql_provenance")
393
+ provenance_savepoint = True
389
394
  provenance_res = self.fetch_domain_types_via_provenance(conn, last_query, described, provenance)
390
- self.db_interface.execute_query_fetching_results(conn, "RELEASE SAVEPOINT __jaaql_provenance")
395
+ if provenance_savepoint:
396
+ self.db_interface.execute_query_fetching_results(conn, "RELEASE SAVEPOINT __jaaql_provenance")
391
397
  except Exception:
392
398
  traceback.print_exc()
393
399
  provenance_res = None
394
- self.db_interface.execute_query_fetching_results(conn, "ROLLBACK TO SAVEPOINT __jaaql_provenance")
400
+ if provenance_savepoint:
401
+ self.db_interface.execute_query_fetching_results(conn, "ROLLBACK TO SAVEPOINT __jaaql_provenance")
395
402
 
396
403
  if attempt_fetch_domain_types and provenance_res is None:
397
404
  temp_view_name = ''.join(random.choices(string.ascii_letters + string.digits, k=10))
@@ -1544,6 +1544,14 @@ WHERE
1544
1544
 
1545
1545
  super_interface = create_interface(self.config, address, port, DB__jaaql, username, db_password)
1546
1546
  conn = super_interface.get_conn()
1547
+ # A wipe leaves a window where background services (cron, EMS poller, auth verifier)
1548
+ # reconnect and can abandon an open transaction holding locks on the fresh jaaql tables.
1549
+ # The install DDL below would then queue behind that lock forever (no lock_timeout),
1550
+ # wedging /internal/clean into an nginx 504. Kill the strays and bound every lock wait so
1551
+ # a re-raced install fails fast (and can be retried) instead of hanging
1552
+ super_interface.execute_query(conn, "SELECT pg_terminate_backend(pid) FROM pg_stat_activity "
1553
+ "WHERE datname = current_database() AND pid <> pg_backend_pid()")
1554
+ super_interface.execute_query(conn, "SET lock_timeout TO '10s'")
1547
1555
  super_interface.execute_script_file(conn, join(get_jaaql_root(), DIR__scripts, "01.install_domains.generated.sql"))
1548
1556
  super_interface.execute_script_file(conn, join(get_jaaql_root(), DIR__scripts, "02.install_super_user.exceptions.sql"))
1549
1557
  super_interface.execute_script_file(conn, join(get_jaaql_root(), DIR__scripts, "03.install_super_user.handwritten.sql"))
@@ -1560,6 +1568,7 @@ WHERE
1560
1568
 
1561
1569
  self.jaaql_lookup_connection = create_interface(self.config, address, port, DB__jaaql, ROLE__jaaql, jaaql_db_password)
1562
1570
  conn = self.jaaql_lookup_connection.get_conn()
1571
+ self.jaaql_lookup_connection.execute_query(conn, "SET lock_timeout TO '10s'")
1563
1572
  self.jaaql_lookup_connection.execute_script_file(conn, join(get_jaaql_root(), DIR__scripts,
1564
1573
  "04.install_jaaql_data_structures.generated.sql"))
1565
1574
  self.jaaql_lookup_connection.execute_script_file(conn, join(get_jaaql_root(), DIR__scripts,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaaql-middleware-python
3
- Version: 5.3.13
3
+ Version: 5.3.15
4
4
  Summary: The jaaql package, allowing for rapid development and deployment of RESTful HTTP applications
5
5
  Home-page: https://github.com/JAAQL/JAAQL-middleware-python
6
6
  Author: Software Quality Measurement and Improvement bv