dice-group / gerbil

GERBIL - General Entity annotatoR Benchmark
GNU Affero General Public License v3.0
224 stars 58 forks source link

GERBIL aborts the start of an experiment without informing the user #420

Closed MichaelRoeder closed 5 months ago

MichaelRoeder commented 2 years ago

Problem description

When starting an experiment, GERBIL seems to send the experiment ID although an error occurred while writing the experiment into the database. From the log:

2022-08-13 00:45:05,867 [http-nio-8080-exec-5] ERROR [org.aksw.gerbil.Experimenter] - <Got an Exception while trying to start all needed tasks. Aborting the experiment.>
 org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO ExperimentTasks (annotatorName, datasetName, language, experimentType, matching, state, lastChanged) VALUES (?, ?, ?, ?, ?, ?, ?)]; data exception: string data, right truncation;  table: EXPERIMENTTASKS column: DATASETNAME; nested exception is java.sql.SQLDataException: data exception: string data, right truncation;  table: EXPERIMENTTASKS column: DATASETNAME
    at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:83) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:849) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:311) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:293) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.aksw.gerbil.database.ExperimentDAOImpl.createTask(ExperimentDAOImpl.java:158) ~[classes/:?]
    at org.aksw.gerbil.Experimenter.run(Experimenter.java:81) [classes/:?]
    at org.aksw.gerbil.web.MainController.execute(MainController.java:208) [classes/:?]
    at sun.reflect.GeneratedMethodAccessor165.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) [spring-web-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) [spring-web-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:743) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:672) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:842) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) [tomcat-servlet-api-9.0.62.jar:4.0.FR]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:827) [spring-webmvc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) [tomcat-servlet-api-9.0.62.jar:4.0.FR]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket-9.0.62.jar:9.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) [tomcat-catalina-9.0.62.jar:9.0.62]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) [tomcat-coyote-9.0.62.jar:9.0.62]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote-9.0.62.jar:9.0.62]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) [tomcat-coyote-9.0.62.jar:9.0.62]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) [tomcat-coyote-9.0.62.jar:9.0.62]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote-9.0.62.jar:9.0.62]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-util-9.0.62.jar:9.0.62]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-util-9.0.62.jar:9.0.62]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util-9.0.62.jar:9.0.62]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
Caused by: java.sql.SQLDataException: data exception: string data, right truncation;  table: EXPERIMENTTASKS column: DATASETNAME
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:851) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:849) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    ... 43 more
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation;  table: EXPERIMENTTASKS column: DATASETNAME
    at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Table.enforceTypeLimits(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.StatementDML.insertRowSet(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:851) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:849) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    ... 43 more
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation
    at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.types.CharacterType.convertToTypeLimits(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Table.enforceTypeLimits(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.StatementDML.insertRowSet(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:851) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:849) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) ~[spring-jdbc-3.2.17.RELEASE.jar:3.2.17.RELEASE]
    ... 43 more

The user reported, that GERBIL still answered with an experiment ID. However, this ID does not lead to any existing experiment.

diegoceccarelli commented 2 years ago

I'm experiencing this running gerbil locally or on the ufficial website, and i cant benchmark one external annotator. Any workaround?

MichaelRoeder commented 1 year ago

In case the exception that you receive locally is exactly the same as above, the line Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation means that the string that GERBIL tries to store as system name in the database is too long.

However, I cannot find such an error on our server. Did you try it recently?

diegoceccarelli commented 1 year ago

Sorry @MichaelRoeder I have just seen your reply - I was trying on a local instance, the name of the system was short but the the url was quite long - could that cause the problem? I can try to short it..

diegoceccarelli commented 1 year ago

@MichaelRoeder I confirm that the issue was the url of the method (too long)