Skip to content

Error when storing data: #61

Description

@knoxsp

In hydra-pywr:

1 : 1 2025-12-10 12:49:42,400 - INFO - Args {'bulk_update_resourcedata': {'scenario_ids': [296100], 'resource_scenarios': [{'resource_attr_id': 39581808, 'dataset': {'name': 'simulated_flow', 'value': '{data: {url: s3://waterstrategy-resul
Traceback (most recent call last):
  File /usr/local/bin/hydra-pywr, line 33, in <module>
    sys.exit(load_entry_point('hydra-pywr==0.1', 'console_scripts', 'hydra-pywr')())
  File /usr/local/lib/python3.10/dist-packages/hydra_pywr-0.1-py3.10.egg/hydra_pywr/cli.py, line 27, in start_cli
    cli(obj={}, auto_envvar_prefix='HYDRA_PYWR')
  File /usr/local/lib/python3.10/dist-packages/click/core.py, line 1157, in __call__
    return self.main(*args, **kwargs)
  File /usr/local/lib/python3.10/dist-packages/click/core.py, line 1078, in main
    rv = self.invoke(ctx)
  File /usr/local/lib/python3.10/dist-packages/click/core.py, line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File /usr/local/lib/python3.10/dist-packages/click/core.py, line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File /usr/local/lib/python3.10/dist-packages/click/core.py, line 783, in invoke
    return __callback(*args, **kwargs)
  File /usr/local/lib/python3.10/dist-packages/click/decorators.py, line 45, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File /usr/local/lib/python3.10/dist-packages/hydra_pywr-0.1-py3.10.egg/hydra_pywr/cli.py, line 147, in run
    runner.run_network_scenario(client,
  File /usr/local/lib/python3.10/dist-packages/hydra_pywr-0.1-py3.10.egg/hydra_pywr/runner.py, line 49, in run_network_scenario
    runner.save_pywr_results()
  File /usr/local/lib/python3.10/dist-packages/hydra_pywr-0.1-py3.10.egg/hydra_pywr/runner.py, line 633, in save_pywr_results
    self.hydra.bulk_update_resourcedata(
  File /usr/local/lib/python3.10/dist-packages/hydra_client-0.1.3-py3.10.egg/hydra_client/connection/base_connection.py, line 39, in wrapped
  File /usr/local/lib/python3.10/dist-packages/hydra_client-0.1.3-py3.10.egg/hydra_client/connection/remote_json_connection.py, line 165, in call
hydra_client.exception.RequestError: {'message': b'', 'code': '200'}
/usr/local/lib/python3.10/dist-packages/tables/file.py:114: UnclosedFileWarning: Closing remaining open file: /tmp/296100/simulated_volume.h5
  warnings.warn(UnclosedFileWarning(msg))
/usr/local/lib/python3.10/dist-packages/tables/file.py:114: UnclosedFileWarning: Closing remaining open file: /tmp/296100/simulated_flow.h5
  warnings.warn(UnclosedFileWarning(msg))
+ '[' 1 -ne 0 ']'
+ exit 1

In hydra server:

[SQL: UPDATE `tDataset` SET hash=%s, value=%s, updated_at=CURRENT_TIMESTAMP, updated_by=%s WHERE `tDataset`.id = %s]
[parameters: (3458027192104710309, '[0.955335831988559, 0.7271120857539254]', 12965, 6358555)]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
1 : 1 2025-12-10 12:49:57,798 - ERROR - Fault(Server: IntegrityError('(MySQLdb.IntegrityError) (1062, "Duplicate entry \'3458027192104710309\' for key \'tDataset.hash\'")'))
Traceback (most recent call last):
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1963, in _exec_single_context
    self.dialect.do_execute(
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 943, in do_execute
    cursor.execute(statement, parameters)
  File "/venv/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
    res = self._query(mogrified_query)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
    db.query(q)
  File "/venv/lib/python3.11/site-packages/MySQLdb/connections.py", line 280, in query
    _mysql.connection.query(self, query)
MySQLdb.IntegrityError: (1062, "Duplicate entry '3458027192104710309' for key 'tDataset.hash'")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/venv/lib/python3.11/site-packages/hydra_server/__init__.py", line 187, in call_wrapper
    res =  ctx.service_class.call_wrapper(ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/spyne/service.py", line 194, in call_wrapper
    return ctx.function(*args)
           ^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/hydra_server/server/scenario.py", line 270, in bulk_update_resourcedata
    scenario.bulk_update_resourcedata(scenario_ids,
  File "/venv/lib/python3.11/site-packages/hydra_base/util/permissions.py", line 98, in wrapped
    return wfunc(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/hydra_base/lib/scenario.py", line 986, in bulk_update_resourcedata
    updated_rs = _update_resourcescenario(scen_i,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/hydra_base/lib/scenario.py", line 1167, in _update_resourcescenario
    new_rscen_i = assign_value(r_scen_i,
                  ^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/hydra_base/util/permissions.py", line 98, in wrapped
    return wfunc(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/hydra_base/lib/scenario.py", line 1242, in assign_value
    db.DBSession.flush()
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/scoping.py", line 938, in flush
    return self._proxied.flush(objects=objects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4345, in flush
    self._flush(objects)
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4480, in _flush
    with util.safe_reraise():
  File "/venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4441, in _flush
    flush_context.execute()
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 85, in save_obj
    _emit_update_statements(
  File "/venv/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 912, in _emit_update_statements
    c = connection.execute(
        ^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1415, in execute
    return meth(
           ^^^^^
  File "/venv/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 523, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1637, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1842, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1982, in _exec_single_context
    self._handle_dbapi_exception(
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2351, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1963, in _exec_single_context
    self.dialect.do_execute(
  File "/venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 943, in do_execute
    cursor.execute(statement, parameters)
  File "/venv/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
    res = self._query(mogrified_query)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
    db.query(q)
  File "/venv/lib/python3.11/site-packages/MySQLdb/connections.py", line 280, in query
    _mysql.connection.query(self, query)
sqlalchemy.exc.IntegrityError: (MySQLdb.IntegrityError) (1062, "Duplicate entry '3458027192104710309' for key 'tDataset.hash'")
[SQL: UPDATE `tDataset` SET hash=%s, value=%s, updated_at=CURRENT_TIMESTAMP, updated_by=%s WHERE `tDataset`.id = %s]
[parameters: (3458027192104710309, '[0.955335831988559, 0.7271120857539254]', 12965, 6358555)]
(Background on this error at: https://sqlalche.me/e/20/gkpj)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/venv/lib/python3.11/site-packages/spyne/application.py", line 173, in process_request
    ctx.out_object = self.call_wrapper(ctx)
                     ^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/hydra_server/__init__.py", line 208, in call_wrapper
    raise Fault('Server', e)
spyne.model.fault.Fault: Fault(Server: IntegrityError('(MySQLdb.IntegrityError) (1062, "Duplicate entry \'3458027192104710309\' for key \'tDataset.hash\'")'))
TypeError("'IntegrityError' object is not iterable")
Traceback (most recent call last):
  File "/venv/lib/python3.11/site-packages/spyne/protocol/json.py", line 79, in default
    return super(JsonEncoder, self).default(o)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/encoder.py", line 180, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type IntegrityError is not JSON serializable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/venv/lib/python3.11/site-packages/cheroot/server.py", line 1291, in communicate
    req.respond()
  File "/venv/lib/python3.11/site-packages/cheroot/server.py", line 1081, in respond
    self.server.gateway(self).respond()
  File "/venv/lib/python3.11/site-packages/cheroot/wsgi.py", line 136, in respond
    response = self.req.server.wsgi_app(self.env, self.start_response)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/beaker/middleware.py", line 156, in __call__
    return self.wrap_app(environ, session_start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/spyne/util/wsgi_wrapper.py", line 86, in __call__
    return app(environ, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/spyne/server/wsgi.py", line 310, in __call__
    return self.handle_rpc(req_env, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/spyne/server/wsgi.py", line 437, in handle_rpc
    return self.handle_error(p_ctx, others, p_ctx.out_error,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/spyne/server/wsgi.py", line 394, in handle_error
    p_ctx.out_string = list(p_ctx.out_string)
                       ^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/spyne/protocol/json.py", line 192, in <genexpr>
    json.dumps(o, **self.kwargs).encode(out_string_encoding)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
          ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/encoder.py", line 200, in encode
    chunks = self.iterencode(o, _one_shot=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/encoder.py", line 258, in iterencode
    return _iterencode(o, 0)
           ^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/spyne/protocol/json.py", line 86, in default
    return list(o)
           ^^^^^^^
TypeError: 'IntegrityError' object is not iterable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions