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

Distinguish PATCH and PUT event in handling of BIOS and Installer #81

Closed
zero88 opened this issue Mar 5, 2019 · 1 comment
Closed
Labels
C: bios Issue related to BIOS CL: Simple Medium epic: BBB java Replacement bonescript API in js to java P: High R: Fixed T: Bug Issue Type: Bug

Comments

@zero88
Copy link
Contributor

zero88 commented Mar 5, 2019

Current situation

  • PATCH ~ HTTP PATCH
  • UPDATE ~ HTTP PUT
    But the business logic is not separated clearly when handle these event

Expectation
In Bios and Installer event handler

  • PATCH: update partly database entity properties if request payload present these properties
  • UPDATE: update all database entity properties. Normally, it is required all request payload ~ entity model

These entity properties are update-able:

  • version
  • state
  • deploy_config
  • published_by

Affect sub projects

  • :edge:bios
  • :edge:core
  • :edge:module:installer

More information

  • Some error logs when updating
org.jooq.exception.DataAccessException: SQL [update "PUBLIC"."TBL_MODULE" set "PUBLIC"."TBL_MODULE"."SERVICE_NAME" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."MODIFIED_AT" = cast(? as timestamp), "PUBLIC"."TBL_MODULE"."CREATED_AT" = cast(? as timestamp), "PUBLIC"."TBL_MODULE"."DEPLOY_ID" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."DEPLOY_CONFIG_JSON" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."VERSION" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."SERVICE_ID" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."STATE" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."DEPLOY_LOCATION" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."SERVICE_TYPE" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."PUBLISHED_BY" = cast(? as varchar) where (1 = 1 and "PUBLIC"."TBL_MODULE"."SERVICE_ID" = cast(? as varchar))]; NULL not allowed for column "CREATED_AT"; SQL statement:
update "PUBLIC"."TBL_MODULE" set "PUBLIC"."TBL_MODULE"."SERVICE_NAME" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."MODIFIED_AT" = cast(? as timestamp), "PUBLIC"."TBL_MODULE"."CREATED_AT" = cast(? as timestamp), "PUBLIC"."TBL_MODULE"."DEPLOY_ID" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."DEPLOY_CONFIG_JSON" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."VERSION" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."SERVICE_ID" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."STATE" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."DEPLOY_LOCATION" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."SERVICE_TYPE" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."PUBLISHED_BY" = cast(? as varchar) where (1 = 1 and "PUBLIC"."TBL_MODULE"."SERVICE_ID" = cast(? as varchar)) [23502-197]
        at org.jooq_3.11.8.H2.debug(Unknown Source)
        at org.jooq.impl.Tools.translate(Tools.java:2384)
        at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:822)
        at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:364)
        at org.jooq.impl.AbstractDelegatingQuery.execute(AbstractDelegatingQuery.java:127)
        at io.github.jklingsporn.vertx.jooq.rx.jdbc.JDBCRXGenericQueryExecutor.lambda$execute$1(JDBCRXGenericQueryExecutor.java:46)
        at io.vertx.reactivex.core.Vertx$3.handle(Vertx.java:625)
        at io.vertx.reactivex.core.Vertx$3.handle(Vertx.java:623)
        at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:272)
        at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.h2.jdbc.JdbcSQLException: NULL not allowed for column "CREATED_AT"; SQL statement:
update "PUBLIC"."TBL_MODULE" set "PUBLIC"."TBL_MODULE"."SERVICE_NAME" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."MODIFIED_AT" = cast(? as timestamp), "PUBLIC"."TBL_MODULE"."CREATED_AT" = cast(? as timestamp), "PUBLIC"."TBL_MODULE"."DEPLOY_ID" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."DEPLOY_CONFIG_JSON" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."VERSION" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."SERVICE_ID" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."STATE" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."DEPLOY_LOCATION" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."SERVICE_TYPE" = cast(? as varchar), "PUBLIC"."TBL_MODULE"."PUBLISHED_BY" = cast(? as varchar) where (1 = 1 and "PUBLIC"."TBL_MODULE"."SERVICE_ID" = cast(? as varchar)) [23502-197]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
        at org.h2.message.DbException.get(DbException.java:179)
        at org.h2.message.DbException.get(DbException.java:155)
        at org.h2.table.Column.validateConvertUpdateSequence(Column.java:374)
        at org.h2.table.Table.validateConvertUpdateSequence(Table.java:798)
        at org.h2.command.dml.Update.update(Update.java:157)
        at org.h2.command.CommandContainer.update(CommandContainer.java:102)
        at org.h2.command.Command.executeUpdate(Command.java:261)
        at org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:249)
        at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
        at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
        at org.jooq.tools.jdbc.DefaultPreparedStatement.execute(DefaultPreparedStatement.java:209)
        at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:432)
        at org.jooq.impl.AbstractDMLQuery.execute(AbstractDMLQuery.java:613)
        at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:350)
        ... 10 common frames omitted
@zero88 zero88 added C: bios Issue related to BIOS T: Bug Issue Type: Bug P: High CL: Simple Medium epic: BBB java Replacement bonescript API in js to java labels Mar 5, 2019
@zero88
Copy link
Contributor Author

zero88 commented Mar 5, 2019

After #80

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: bios Issue related to BIOS CL: Simple Medium epic: BBB java Replacement bonescript API in js to java P: High R: Fixed T: Bug Issue Type: Bug
Projects
None yet
Development

No branches or pull requests

2 participants