powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Assertion botch: negative time
6 сообщений из 6, страница 1 из 1
Assertion botch: negative time
    #39009928
Pektoralis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

SELECT sysdate, SYSTIMESTAMP, CURRENT_TIMESTAMP, DBTIMEZONE, SESSIONTIMEZONE FROM DUAL;

Код: plaintext
1.
2.
3.
4.
SYSDATE	                 17.07.2015 14:19:07
SYSTIMESTAMP	         17.07.15 14:19:07,558000 +03:00
CURRENT_TIMESTAMP	 17.07.15 14:19:07,558000 +03:00
DBTIMEZONE	         +00:00
SESSIONTIMEZONE	 +03:00


Два сервера Glassfish 4.1

java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

Один выдает ошибку:

авторStandardWrapperValve[promo]: Servlet.service() for servlet promo threw exception
java.lang.RuntimeException: Assertion botch: negative time
at oracle.jdbc.driver.DateCommonBinder.setOracleHMS(OraclePreparedStatement.java:29587)
at oracle.jdbc.driver.TimestampBinder.bind(OraclePreparedStatement.java:30541)
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2396)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3914)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3999)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:4515)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
...
Рейтинг: 0 / 0
Assertion botch: negative time
    #39009936
Pektoralis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
Calendar now = Calendar.getInstance();
System.out.println(now.getTimeZone());	



sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=10800000,dstSavings=0,useDaylight=false,transitions=79,lastRule=null]
...
Рейтинг: 0 / 0
Assertion botch: negative time
    #39009967
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pektoralis,

Похоже на косяк с timezone, либо Java стоит по 79-80 апдейта обновить, либо Oracle пропатчить. Возможно, только у одного из них актуальное российское время, а у другого старое, с разнице в час.
...
Рейтинг: 0 / 0
Assertion botch: negative time
    #39204987
AndreyDmt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pektoralis,

Не удалось победить?
Заимел такую же проблему с выходных (ну когда по старой жизни менялось зимнее время на летнее), если сохранять дату с установленным временем больше 23:00, то вылетает с сабжевой ошибкой. Самое забавное, что поле у меня TIMESTAMP (без зоны), заполняется на строне сервере с помощью SYSDATE (тоже без зоны), запись в приложение возвращается нормально (т.е. приходит и со временем 23:ХХ), но стоит эту запись попытаться сохранить обратно, то время уже "ошибочное". Проверил все таймзоны: ось (и на линуксе, и на винде , jboss, oracle - везде +5. Пропатчил jdk свежими ТЗ. Собственно, результат - не помогло.
...
Рейтинг: 0 / 0
Assertion botch: negative time
    #39205169
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pektoralis,

На металинке https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=456601974486284&id=1206581.1&displayIndex=2&_afrWindowMode=0&_adf.ctrl-state=1bdd7tk9iu_146

Assertion botch: negative time With 11.2 JDBC Drivers (Doc ID 1206581.1)

Applies to:
JDBC - Version 11.2.0.1.0 to 11.2.0.1.0 [Release 11.2]

Cause
Issue is related to the Oracle's DST transition tables differs from those used by the JVM.
Confirmed through the Bug 9491954 - RUNTIMEEXCEPTION: ASSERTION BOTCH: NEGATIVE TIME WHEN BINDING TIMESTAMP.

Symptoms
On using the latest driver 11.2.0.1 to insert or update the date values which are near to end of the day i.e. like “0001-04-28 23:38:19”, “0001-04-02 23:53:01”, with Timezone set to "(GMT +05:30) Chennai, Kolkata, Mumbai, New Delhi" gets the following exception

java.lang.RuntimeException: Assertion botch: negative time
at oracle.jdbc.driver.DateCommonBinder.setOracleHMS(OraclePreparedStatement.java:17446)
at oracle.jdbc.driver.TimestampBinder.bind(OraclePreparedStatement.java:17951)
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:3014)
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2247)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3444)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1062)

Solution
Upgrade the JDBC driver to version 11.2.0.2.0 or higher which can be downloaded from the OTN website here:
http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
...
Рейтинг: 0 / 0
Assertion botch: negative time
    #39205641
AndreyDmt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0FD,

Помогло, спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Assertion botch: negative time
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]