Latest Schema reports invalid time series in slightly different way
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 28
- Forks
- 25
- Avg merge
- 4d 22h
- Merged PRs (30d)
- 20
Description
Describe the bug
Tests have started to fail that rely on specific behavior from the LRTS options
Expected behavior
Correct and well presented failures
To Reproduce
Run tests using LRTS intervals against latest-dev schema
Logs/Incident Identifier
BinaryTimeSeriesControllerTestIT (schema: latest-dev) > BinaryTimeSeriesControllerTestIT.test_create_get_delete_get_lrts (schema: latest-dev) > [2] */* STANDARD_ERROR
17-Nov-2025 16:19:56.690 WARNING [http-nio-auto-1-exec-4] cwms.cda.ApiServlet.lambda$init$8 error on request[5710f2dc-4b5c-4ad8-bd26-642e4c0cd089]: /cwms-data/timeseries/binary/
org.jooq.exception.DataAccessException: SQL [{ call "CWMS_20"."CWMS_TEXT"."STORE_TS_BINARY" (?, ?, ?, ?, cast(? as date), ?, ?, ?, ?, ?) }]; ORA-20998: ERROR: INVALID Time Series Identifier "TsBinTestLoc.Binary.Inst.1DayLocal.0.lrts": No such interval
ORA-06512: at "CWMS_20.CWMS_ERR", line 80
ORA-06512: at "CWMS_20.CWMS_TS", line 8834
ORA-01403: no data found
ORA-06512: at "CWMS_20.CWMS_TS", line 8807
ORA-06512: at "CWMS_20.CWMS_TS", line 61
ORA-06512: at "CWMS_20.CWMS_TS", line 26
ORA-06512: at "CWMS_20.CWMS_TS", line 10874
ORA-06512: at "CWMS_20.CWMS_TEXT", line 3914
ORA-06512: at line 1
at org.jooq_3.18.7.ORACLE18C.debug(Unknown Source)
at org.jooq.impl.Tools.translate(Tools.java:3470)
at org.jooq.impl.Tools.translate(Tools.java:3458)
at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:802)
at org.jooq.impl.AbstractRoutine.executeCallableStatement(AbstractRoutine.java:611)
at org.jooq.impl.AbstractRoutine.execute(AbstractRoutine.java:405)
at org.jooq.impl.Tools.attach(Tools.java:1610)
at org.jooq.impl.AbstractRoutine.execute(AbstractRoutine.java:374)
at usace.cwms.db.jooq.codegen.packages.CWMS_TEXT_PACKAGE.call_STORE_TS_BINARY__2(CWMS_TEXT_PACKAGE.java:2123)
at cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao.store(TimeSeriesBinaryDao.java:140)
at cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao.storeRow(TimeSeriesBinaryDao.java:298)
at cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao.lambda$storeRows$2(TimeSeriesBinaryDao.java:284)
at org.jooq.impl.DefaultDSLContext.lambda$transaction$5(DefaultDSLContext.java:593)
at org.jooq.impl.DefaultDSLContext.lambda$transactionResult0$3(DefaultDSLContext.java:531)
at org.jooq.impl.Tools$3$1.block(Tools.java:6068)
at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3128)
at org.jooq.impl.Tools$3.get(Tools.java:6065)
at org.jooq.impl.DefaultDSLContext.transactionResult0(DefaultDSLContext.java:579)
at org.jooq.impl.DefaultDSLContext.transactionResult(DefaultDSLContext.java:503)
at org.jooq.impl.DefaultDSLContext.transaction(DefaultDSLContext.java:592)
at cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao.lambda$storeRows$3(TimeSeriesBinaryDao.java:281)
at org.jooq.impl.DefaultDSLContext.lambda$connection$12(DefaultDSLContext.java:697)
at org.jooq.impl.DefaultDSLContext.connectionResult(DefaultDSLContext.java:658)
at org.jooq.impl.DefaultDSLContext.connection(DefaultDSLContext.java:696)
at cwms.cda.data.dao.JooqDao.connection(JooqDao.java:734)
at cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao.storeRows(TimeSeriesBinaryDao.java:279)
at cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao.store(TimeSeriesBinaryDao.java:153)
at cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao.store(TimeSeriesBinaryDao.java:146)
at cwms.cda.api.BinaryTimeSeriesController.create(BinaryTimeSeriesController.java:212)
at io.javalin.apibuilder.CrudFunction$3.invoke$lambda-0(CrudHandler.kt:32)
at io.javalin.apibuilder.CrudFunctionHandler.handle(CrudHandler.kt)
at cwms.cda.security.CdaAccessManager.manage(CdaAccessManager.java:37)
at io.javalin.http.JavalinServlet.addHandler$lambda-0(JavalinServlet.kt:96)
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:99)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2241)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:680)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2100)
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2241)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:680)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2100)
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2241)
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at cwms.cda.ApiServlet.service(ApiServlet.java:910)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:129)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:334)
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:161)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:240)
at fixtures.tomcat.SingleSignOnWrapper.invoke(SingleSignOnWrapper.java:21)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1831)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.sql.SQLException: ORA-20998: ERROR: INVALID Time Series Identifier "TsBinTestLoc.Binary.Inst.1DayLocal.0.lrts": No such interval
ORA-06512: at "CWMS_20.CWMS_ERR", line 80
ORA-06512: at "CWMS_20.CWMS_TS", line 8834
ORA-01403: no data found
ORA-06512: at "CWMS_20.CWMS_TS", line 8807
ORA-06512: at "CWMS_20.CWMS_TS", line 61
ORA-06512: at "CWMS_20.CWMS_TS", line 26
ORA-06512: at "CWMS_20.CWMS_TS", line 10874
ORA-06512: at "CWMS_20.CWMS_TEXT", line 3914
ORA-06512: at line 1
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:461)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1104)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:550)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:268)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:655)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:265)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:86)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:965)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1205)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3666)
at oracle.jdbc.driver.T4CCallableStatement.executeInternal(T4CCallableStatement.java:1358)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3778)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4251)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1081)
at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:214)
at com.sun.proxy.$Proxy63.execute(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:214)
at com.sun.proxy.$Proxy63.execute(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor$StatementProxy.invoke(StatementDecoratorInterceptor.java:237)
at com.sun.proxy.$Proxy63.execute(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:123)
at com.sun.proxy.$Proxy63.execute(Unknown Source)
at org.jooq.tools.jdbc.DefaultPreparedStatement.execute(DefaultPreparedStatement.java:219)
at org.jooq.impl.Tools.executeStatementAndGetFirstResultSet(Tools.java:4695)
at org.jooq.impl.AbstractRoutine.execute0(AbstractRoutine.java:622)
at org.jooq.impl.AbstractRoutine.executeCallableStatement(AbstractRoutine.java:582)
... 84 more
Caused by: Error : 20998, Position : 0, Sql = BEGIN "CWMS_20"."CWMS_TEXT"."STORE_TS_BINARY" (:1 , :2 , :3 , :4 , cast(:5 as date), :6 , :7 , :8 , :9 , :10 ) ; END;, OriginalSql = { call "CWMS_20"."CWMS_TEXT"."STORE_TS_BINARY" (?, ?, ?, ?, cast(? as date), ?, ?, ?, ?, ?) }, Error Msg = ORA-20998: ERROR: INVALID Time Series Identifier "TsBinTestLoc.Binary.Inst.1DayLocal.0.lrts": No such interval
ORA-06512: at "CWMS_20.CWMS_ERR", line 80
ORA-06512: at "CWMS_20.CWMS_TS", line 8834
ORA-01403: no data found
ORA-06512: at "CWMS_20.CWMS_TS", line 8807
ORA-06512: at "CWMS_20.CWMS_TS", line 61
ORA-06512: at "CWMS_20.CWMS_TS", line 26
ORA-06512: at "CWMS_20.CWMS_TS", line 10874
ORA-06512: at "CWMS_20.CWMS_TEXT", line 3914
ORA-06512: at line 1
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:513)
... 122 more
CURL Commands
N/A
CDA Version (please complete the following information):
- Version develop, anything released to date
Additional context
Add any other context about the problem here.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running BinaryTimeSeriesControllerTestIT.test_create_get_delete_get_lrts with LRTS intervals against the latest-dev schema. Trace the failure from BinaryTimeSeriesController.create through TimeSeriesBinaryDao.store and compare the reported invalid-interval behavior with the test's expected behavior. Done means the affected tests produce correct, well-presented failures.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, backend, database
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100