Index: 3rdParty_sources/quartz/org/quartz/Calendar.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/Calendar.java (.../Calendar.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/Calendar.java (.../Calendar.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/CronExpression.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/CronExpression.java (.../CronExpression.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/CronExpression.java (.../CronExpression.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -605,14 +605,14 @@ } if (type != DAY_OF_WEEK && type != DAY_OF_MONTH) { throw new ParseException( - "'?' can only be specfied for Day-of-Month or Day-of-Week.", + "'?' can only be specified for Day-of-Month or Day-of-Week.", i); } if (type == DAY_OF_WEEK && !lastdayOfMonth) { int val = daysOfMonth.last(); if (val == NO_SPEC_INT) { throw new ParseException( - "'?' can only be specfied for Day-of-Month -OR- Day-of-Week.", + "'?' can only be specified for Day-of-Month -OR- Day-of-Week.", i); } } @@ -645,17 +645,7 @@ if (incr > 10) { i++; } - if (incr > 59 && (type == SECOND || type == MINUTE)) { - throw new ParseException("Increment > 60 : " + incr, i); - } else if (incr > 23 && (type == HOUR)) { - throw new ParseException("Increment > 24 : " + incr, i); - } else if (incr > 31 && (type == DAY_OF_MONTH)) { - throw new ParseException("Increment > 31 : " + incr, i); - } else if (incr > 7 && (type == DAY_OF_WEEK)) { - throw new ParseException("Increment > 7 : " + incr, i); - } else if (incr > 12 && (type == MONTH)) { - throw new ParseException("Increment > 12 : " + incr, i); - } + checkIncrementRange(incr, type, i); } else { incr = 1; } @@ -710,6 +700,20 @@ return i; } + private void checkIncrementRange(int incr, int type, int idxPos) throws ParseException { + if (incr > 59 && (type == SECOND || type == MINUTE)) { + throw new ParseException("Increment > 60 : " + incr, idxPos); + } else if (incr > 23 && (type == HOUR)) { + throw new ParseException("Increment > 24 : " + incr, idxPos); + } else if (incr > 31 && (type == DAY_OF_MONTH)) { + throw new ParseException("Increment > 31 : " + incr, idxPos); + } else if (incr > 7 && (type == DAY_OF_WEEK)) { + throw new ParseException("Increment > 7 : " + incr, idxPos); + } else if (incr > 12 && (type == MONTH)) { + throw new ParseException("Increment > 12 : " + incr, idxPos); + } + } + protected int checkNext(int pos, String s, int val, int type) throws ParseException { @@ -816,18 +820,24 @@ } if (c == '/') { + if ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s.charAt(i + 1) == '\t') { + throw new ParseException("'/' must be followed by an integer.", i); + } + i++; c = s.charAt(i); int v2 = Integer.parseInt(String.valueOf(c)); i++; if (i >= s.length()) { + checkIncrementRange(v2, type, i); addToSet(val, end, v2, type); return i; } c = s.charAt(i); if (c >= '0' && c <= '9') { ValueSet vs = getValue(v2, s, i); int v3 = vs.value; + checkIncrementRange(v3, type, i); addToSet(val, end, v3, type); i = vs.pos; return i; Index: 3rdParty_sources/quartz/org/quartz/CronScheduleBuilder.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/CronScheduleBuilder.java (.../CronScheduleBuilder.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/CronScheduleBuilder.java (.../CronScheduleBuilder.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -92,7 +92,7 @@ /** * Create a CronScheduleBuilder with the given cron-expression string - - * which is presumed to b e valid cron expression (and hence only a + * which is presumed to be a valid cron expression (and hence only a * RuntimeException will be thrown if it is not). * * @param cronExpression Index: 3rdParty_sources/quartz/org/quartz/InterruptableJob.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/InterruptableJob.java (.../InterruptableJob.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/InterruptableJob.java (.../InterruptableJob.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/Job.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/Job.java (.../Job.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/Job.java (.../Job.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/JobBuilder.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/JobBuilder.java (.../JobBuilder.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/JobBuilder.java (.../JobBuilder.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -198,6 +198,7 @@ * *

* If not explicitly set, the default value is false. + * - this method sets the value to true. *

* * @return the updated JobBuilder @@ -238,8 +239,7 @@ * @see JobDetail#isDurable() */ public JobBuilder storeDurably() { - this.durability = true; - return this; + return storeDurably(true); } /** Index: 3rdParty_sources/quartz/org/quartz/JobDataMap.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/JobDataMap.java (.../JobDataMap.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/JobDataMap.java (.../JobDataMap.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -46,6 +46,12 @@ * of merging the contents of the trigger's JobDataMap (if any) over the * Job's JobDataMap (if any). *

+ * + *

+ * Update since 2.2.4 - We keep an dirty flag for this map so that whenever you modify(add/delete) any of the entries, + * it will set to "true". However if you create new instance using an exising map with {@link #JobDataMap(Map)}, then + * the dirty flag will NOT be set to "true" until you modify the instance. + *

* * @see Job * @see PersistJobDataAfterExecution @@ -85,6 +91,10 @@ @SuppressWarnings("unchecked") // casting to keep API compatible and avoid compiler errors/warnings. Map mapTyped = (Map)map; putAll(mapTyped); + + // When constructing a new data map from another existing map, we should NOT mark dirty flag as true + // Use case: loading JobDataMap from DB + clearDirtyFlag(); } /* Index: 3rdParty_sources/quartz/org/quartz/JobExecutionException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/JobExecutionException.java (.../JobExecutionException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/JobExecutionException.java (.../JobExecutionException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,5 @@ - -/* - * Copyright 2001-2009 Terracotta, Inc. +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/JobKey.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/JobKey.java (.../JobKey.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/JobKey.java (.../JobKey.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -23,7 +23,7 @@ * Uniquely identifies a {@link JobDetail}. * *

Keys are composed of both a name and group, and the name must be unique - * within the group. If only a group is specified then the default group + * within the group. If only a name is specified then the default group * name will be used.

* *

Quartz provides a builder-style API for constructing scheduling-related Index: 3rdParty_sources/quartz/org/quartz/JobListener.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/JobListener.java (.../JobListener.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/JobListener.java (.../JobListener.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/JobPersistenceException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/JobPersistenceException.java (.../JobPersistenceException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/JobPersistenceException.java (.../JobPersistenceException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ObjectAlreadyExistsException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ObjectAlreadyExistsException.java (.../ObjectAlreadyExistsException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ObjectAlreadyExistsException.java (.../ObjectAlreadyExistsException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/Scheduler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/Scheduler.java (.../Scheduler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/Scheduler.java (.../Scheduler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -826,6 +826,22 @@ throws SchedulerException; /** + * Reset the current state of the identified {@link Trigger} + * from {@link TriggerState#ERROR} to {@link TriggerState#NORMAL} or + * {@link TriggerState#PAUSED} as appropriate. + * + *

Only affects triggers that are in ERROR state - if identified trigger is not + * in that state then the result is a no-op.

+ * + *

The result will be the trigger returning to the normal, waiting to + * be fired state, unless the trigger's group has been paused, in which + * case it will go into the PAUSED state.

+ * + * @see Trigger.TriggerState + */ + void resetTriggerFromErrorState(TriggerKey triggerKey) + throws SchedulerException; + /** * Add (register) the given Calendar to the Scheduler. * * @param updateTriggers whether or not to update existing triggers that Index: 3rdParty_sources/quartz/org/quartz/SchedulerConfigException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/SchedulerConfigException.java (.../SchedulerConfigException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/SchedulerConfigException.java (.../SchedulerConfigException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,5 @@ - -/* - * Copyright 2001-2009 Terracotta, Inc. +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/SchedulerContext.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/SchedulerContext.java (.../SchedulerContext.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/SchedulerContext.java (.../SchedulerContext.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/SchedulerException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/SchedulerException.java (.../SchedulerException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/SchedulerException.java (.../SchedulerException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/SchedulerFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/SchedulerFactory.java (.../SchedulerFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/SchedulerFactory.java (.../SchedulerFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/SchedulerListener.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/SchedulerListener.java (.../SchedulerListener.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/SchedulerListener.java (.../SchedulerListener.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/SchedulerMetaData.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/SchedulerMetaData.java (.../SchedulerMetaData.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/SchedulerMetaData.java (.../SchedulerMetaData.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/StatefulJob.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/StatefulJob.java (.../StatefulJob.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/StatefulJob.java (.../StatefulJob.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/Trigger.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/Trigger.java (.../Trigger.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/Trigger.java (.../Trigger.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -98,7 +98,7 @@ * *

* In order to see if this instruction fits your needs, you should look at - * the documentation for the getSmartMisfirePolicy() method + * the documentation for the updateAfterMisfire() method * on the particular Trigger implementation you are using. *

*/ Index: 3rdParty_sources/quartz/org/quartz/TriggerListener.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/TriggerListener.java (.../TriggerListener.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/TriggerListener.java (.../TriggerListener.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/TriggerUtils.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/TriggerUtils.java (.../TriggerUtils.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/TriggerUtils.java (.../TriggerUtils.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/UnableToInterruptJobException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/UnableToInterruptJobException.java (.../UnableToInterruptJobException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/UnableToInterruptJobException.java (.../UnableToInterruptJobException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/commonj/WorkManagerThreadExecutor.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/commonj/WorkManagerThreadExecutor.java (.../WorkManagerThreadExecutor.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/commonj/WorkManagerThreadExecutor.java (.../WorkManagerThreadExecutor.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -34,7 +34,7 @@ * details. * * @author matt.accola - * @version $Revision: 2243 $ $Date: 2013-04-30 11:39:48 -0700 (Tue, 30 Apr 2013) $ + * @version $Revision$ $Date$ */ public class WorkManagerThreadExecutor implements ThreadExecutor { private final Logger log = LoggerFactory.getLogger(getClass()); Index: 3rdParty_sources/quartz/org/quartz/core/JobRunShell.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/core/JobRunShell.java (.../JobRunShell.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/core/JobRunShell.java (.../JobRunShell.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/core/JobRunShellFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/core/JobRunShellFactory.java (.../JobRunShellFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/core/JobRunShellFactory.java (.../JobRunShellFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/core/QuartzScheduler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/core/QuartzScheduler.java (.../QuartzScheduler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/core/QuartzScheduler.java (.../QuartzScheduler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -34,7 +34,6 @@ import java.util.Properties; import java.util.Random; import java.util.Set; -import java.util.Timer; import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicInteger; @@ -67,7 +66,6 @@ import org.quartz.Trigger.TriggerState; import org.quartz.core.jmx.QuartzSchedulerMBean; import org.quartz.impl.SchedulerRepository; -import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.GroupMatcher; import org.quartz.listeners.SchedulerListenerSupport; import org.quartz.simpl.PropertySettingJobFactory; @@ -76,7 +74,6 @@ import org.quartz.spi.SchedulerPlugin; import org.quartz.spi.SchedulerSignaler; import org.quartz.spi.ThreadExecutor; -import org.quartz.utils.UpdateChecker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -185,9 +182,6 @@ private QuartzSchedulerMBean jmxBean = null; private Date initialStart = null; - - /** Update timer that must be cancelled upon shutdown. */ - private final Timer updateTimer; private final Logger log = LoggerFactory.getLogger(getClass()); @@ -232,11 +226,6 @@ signaler = new SchedulerSignalerImpl(this, this.schedThread); - if(shouldRunUpdateCheck()) - updateTimer = scheduleUpdateCheck(); - else - updateTimer = null; - getLog().info("Quartz Scheduler v." + getVersion() + " created."); } @@ -328,14 +317,6 @@ return VERSION_MAJOR; } - private boolean shouldRunUpdateCheck() { - if(resources.isRunUpdateCheck() && !Boolean.getBoolean(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK) && - !Boolean.getBoolean("org.terracotta.quartz.skipUpdateCheck")) { - return true; - } - return false; - } - public static String getVersionMinor() { return VERSION_MINOR; } @@ -353,15 +334,6 @@ } /** - * Update checker scheduler - fires every week - */ - private Timer scheduleUpdateCheck() { - Timer rval = new Timer(true); - rval.scheduleAtFixedRate(new UpdateChecker(), 1000, 7 * 24 * 60 * 60 * 1000L); - return rval; - } - - /** * Register the scheduler in the local MBeanServer. */ private void registerJMX() throws Exception { @@ -591,7 +563,7 @@ catch(InterruptedException ignore) {} try { start(); } catch(SchedulerException se) { - getLog().error("Unable to start secheduler after startup delay.", se); + getLog().error("Unable to start scheduler after startup delay.", se); } } }); @@ -764,9 +736,6 @@ SchedulerRepository.getInstance().remove(resources.getName()); holdToPreventGC.clear(); - - if(updateTimer != null) - updateTimer.cancel(); getLog().info( "Scheduler " + resources.getUniqueIdentifier() @@ -1055,8 +1024,14 @@ resources.getJobStore().storeJobsAndTriggers(triggersAndJobs, replace); notifySchedulerThread(0L); - for(JobDetail job: triggersAndJobs.keySet()) - notifySchedulerListenersJobAdded(job); + for (JobDetail job : triggersAndJobs.keySet()) { + notifySchedulerListenersJobAdded(job); + + Set triggers = triggersAndJobs.get(job); + for (Trigger trigger : triggers) { + notifySchedulerListenersSchduled(trigger); + } + } } public void scheduleJob(JobDetail jobDetail, Set triggersForJob, @@ -1587,6 +1562,13 @@ return resources.getJobStore().getTriggerState(triggerKey); } + + public void resetTriggerFromErrorState(TriggerKey triggerKey) throws SchedulerException { + validateState(); + + resources.getJobStore().resetTriggerFromErrorState(triggerKey); + } + /** *

* Add (register) the given Calendar to the Scheduler. Index: 3rdParty_sources/quartz/org/quartz/core/QuartzSchedulerResources.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/core/QuartzSchedulerResources.java (.../QuartzSchedulerResources.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/core/QuartzSchedulerResources.java (.../QuartzSchedulerResources.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -89,8 +89,6 @@ private ThreadExecutor threadExecutor; - private boolean runUpdateCheck = false; - private long batchTimeWindow = 0; private int maxBatchSize = 1; @@ -542,14 +540,6 @@ + ",instance=" + schedInstId; } - public boolean isRunUpdateCheck() { - return runUpdateCheck; - } - - public void setRunUpdateCheck(boolean runUpdateCheck) { - this.runUpdateCheck = runUpdateCheck; - } - public long getBatchTimeWindow() { return batchTimeWindow; } Index: 3rdParty_sources/quartz/org/quartz/core/QuartzSchedulerThread.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/core/QuartzSchedulerThread.java (.../QuartzSchedulerThread.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/core/QuartzSchedulerThread.java (.../QuartzSchedulerThread.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -27,6 +27,7 @@ import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.Trigger.CompletedExecutionInstruction; +import org.quartz.spi.JobStore; import org.quartz.spi.OperableTrigger; import org.quartz.spi.TriggerFiredBundle; import org.quartz.spi.TriggerFiredResult; @@ -241,7 +242,7 @@ */ @Override public void run() { - boolean lastAcquireFailed = false; + int acquiresFailed = 0; while (!halted.get()) { try { @@ -253,41 +254,57 @@ sigLock.wait(1000L); } catch (InterruptedException ignore) { } + + // reset failure counter when paused, so that we don't + // wait again after unpausing + acquiresFailed = 0; } if (halted.get()) { break; } } + // wait a bit, if reading from job store is consistently + // failing (e.g. DB is down or restarting).. + if (acquiresFailed > 1) { + try { + long delay = computeDelayForRepeatedErrors(qsRsrcs.getJobStore(), acquiresFailed); + Thread.sleep(delay); + } catch (Exception ignore) { + } + } + int availThreadCount = qsRsrcs.getThreadPool().blockForAvailableThreads(); if(availThreadCount > 0) { // will always be true, due to semantics of blockForAvailableThreads... - List triggers = null; + List triggers; long now = System.currentTimeMillis(); clearSignaledSchedulingChange(); try { triggers = qsRsrcs.getJobStore().acquireNextTriggers( now + idleWaitTime, Math.min(availThreadCount, qsRsrcs.getMaxBatchSize()), qsRsrcs.getBatchTimeWindow()); - lastAcquireFailed = false; - if (log.isDebugEnabled()) + acquiresFailed = 0; + if (log.isDebugEnabled()) log.debug("batch acquisition of " + (triggers == null ? 0 : triggers.size()) + " triggers"); } catch (JobPersistenceException jpe) { - if(!lastAcquireFailed) { + if (acquiresFailed == 0) { qs.notifySchedulerListenersError( "An error occurred while scanning for the next triggers to fire.", jpe); } - lastAcquireFailed = true; + if (acquiresFailed < Integer.MAX_VALUE) + acquiresFailed++; continue; } catch (RuntimeException e) { - if(!lastAcquireFailed) { + if (acquiresFailed == 0) { getLog().error("quartzSchedulerThreadLoop: RuntimeException " +e.getMessage(), e); } - lastAcquireFailed = true; + if (acquiresFailed < Integer.MAX_VALUE) + acquiresFailed++; continue; } @@ -424,6 +441,29 @@ qsRsrcs = null; } + private static final long MIN_DELAY = 20; + private static final long MAX_DELAY = 600000; + + private static long computeDelayForRepeatedErrors(JobStore jobStore, int acquiresFailed) { + long delay; + try { + delay = jobStore.getAcquireRetryDelay(acquiresFailed); + } catch (Exception ignored) { + // we're trying to be useful in case of error states, not cause + // additional errors.. + delay = 100; + } + + + // sanity check per getAcquireRetryDelay specification + if (delay < MIN_DELAY) + delay = MIN_DELAY; + if (delay > MAX_DELAY) + delay = MAX_DELAY; + + return delay; + } + private boolean releaseIfScheduleChangedSignificantly( List triggers, long triggerTime) { if (isCandidateNewTimeEarlierWithinReason(triggerTime, true)) { Index: 3rdParty_sources/quartz/org/quartz/core/RemotableQuartzScheduler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/core/RemotableQuartzScheduler.java (.../RemotableQuartzScheduler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/core/RemotableQuartzScheduler.java (.../RemotableQuartzScheduler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -148,6 +148,8 @@ TriggerState getTriggerState(TriggerKey triggerKey) throws SchedulerException, RemoteException; + void resetTriggerFromErrorState(TriggerKey triggerKey) throws SchedulerException, RemoteException; + void addCalendar(String calName, Calendar calendar, boolean replace, boolean updateTriggers) throws SchedulerException, RemoteException; boolean deleteCalendar(String calName) throws SchedulerException, RemoteException; Index: 3rdParty_sources/quartz/org/quartz/core/SchedulerSignalerImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/core/SchedulerSignalerImpl.java (.../SchedulerSignalerImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/core/SchedulerSignalerImpl.java (.../SchedulerSignalerImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/JBoss4RMIRemoteMBeanScheduler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/JBoss4RMIRemoteMBeanScheduler.java (.../JBoss4RMIRemoteMBeanScheduler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/JBoss4RMIRemoteMBeanScheduler.java (.../JBoss4RMIRemoteMBeanScheduler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/QuartzService.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/QuartzService.java (.../QuartzService.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/QuartzService.java (.../QuartzService.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/QuartzServiceMBean.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/QuartzServiceMBean.java (.../QuartzServiceMBean.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/jmx/jboss/QuartzServiceMBean.java (.../QuartzServiceMBean.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/jta/JTAAnnotationAwareJobRunShellFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/jta/JTAAnnotationAwareJobRunShellFactory.java (.../JTAAnnotationAwareJobRunShellFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/jta/JTAAnnotationAwareJobRunShellFactory.java (.../JTAAnnotationAwareJobRunShellFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/jta/JTAJobRunShell.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/jta/JTAJobRunShell.java (.../JTAJobRunShell.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/jta/JTAJobRunShell.java (.../JTAJobRunShell.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/jta/JTAJobRunShellFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/jta/JTAJobRunShellFactory.java (.../JTAJobRunShellFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/jta/JTAJobRunShellFactory.java (.../JTAJobRunShellFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/jta/UserTransactionHelper.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/jta/UserTransactionHelper.java (.../UserTransactionHelper.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/jta/UserTransactionHelper.java (.../UserTransactionHelper.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/ee/servlet/QuartzInitializerListener.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/servlet/QuartzInitializerListener.java (.../QuartzInitializerListener.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/servlet/QuartzInitializerListener.java (.../QuartzInitializerListener.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2010 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -160,7 +160,7 @@ performShutdown = Boolean.valueOf(shutdownPref).booleanValue(); } String shutdownWaitPref = servletContext.getInitParameter("quartz:wait-on-shutdown"); - if (shutdownPref != null) { + if (shutdownWaitPref != null) { waitOnShutdown = Boolean.valueOf(shutdownWaitPref).booleanValue(); } Index: 3rdParty_sources/quartz/org/quartz/ee/servlet/QuartzInitializerServlet.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/ee/servlet/QuartzInitializerServlet.java (.../QuartzInitializerServlet.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/ee/servlet/QuartzInitializerServlet.java (.../QuartzInitializerServlet.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/helpers/VersionPrinter.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/helpers/VersionPrinter.java (.../VersionPrinter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/helpers/VersionPrinter.java (.../VersionPrinter.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/DefaultThreadExecutor.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/DefaultThreadExecutor.java (.../DefaultThreadExecutor.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/DefaultThreadExecutor.java (.../DefaultThreadExecutor.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl; import org.quartz.spi.ThreadExecutor; Index: 3rdParty_sources/quartz/org/quartz/impl/DirectSchedulerFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/DirectSchedulerFactory.java (.../DirectSchedulerFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/DirectSchedulerFactory.java (.../DirectSchedulerFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -172,7 +172,6 @@ throws SchedulerException { SimpleThreadPool threadPool = new SimpleThreadPool(maxThreads, Thread.NORM_PRIORITY); - threadPool.initialize(); JobStore jobStore = new RAMJobStore(); this.createScheduler(threadPool, jobStore); } @@ -464,7 +463,7 @@ // Fire everything up // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + threadPool.setInstanceName(schedulerName); threadPool.initialize(); QuartzSchedulerResources qrs = new QuartzSchedulerResources(); Index: 3rdParty_sources/quartz/org/quartz/impl/JobDetailImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/JobDetailImpl.java (.../JobDetailImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/JobDetailImpl.java (.../JobDetailImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/JobExecutionContextImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/JobExecutionContextImpl.java (.../JobExecutionContextImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/JobExecutionContextImpl.java (.../JobExecutionContextImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -144,8 +144,8 @@ public TriggerKey getRecoveringTriggerKey() { if (isRecovering()) { - return new TriggerKey(jobDataMap.getString(Scheduler.FAILED_JOB_ORIGINAL_TRIGGER_GROUP), - jobDataMap.getString(Scheduler.FAILED_JOB_ORIGINAL_TRIGGER_NAME)); + return new TriggerKey(jobDataMap.getString(Scheduler.FAILED_JOB_ORIGINAL_TRIGGER_NAME), + jobDataMap.getString(Scheduler.FAILED_JOB_ORIGINAL_TRIGGER_GROUP)); } else { throw new IllegalStateException("Not a recovering job"); } Index: 3rdParty_sources/quartz/org/quartz/impl/QuartzServer.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/QuartzServer.java (.../QuartzServer.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/QuartzServer.java (.../QuartzServer.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/RemoteMBeanScheduler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/RemoteMBeanScheduler.java (.../RemoteMBeanScheduler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/RemoteMBeanScheduler.java (.../RemoteMBeanScheduler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -833,13 +833,29 @@ new String[] { String.class.getName(), String.class.getName() })); } + /** *

* Calls the equivalent method on the 'proxied' QuartzScheduler, * passing the SchedulingContext associated with this * instance. *

*/ + public void resetTriggerFromErrorState(TriggerKey triggerKey) + throws SchedulerException { + invoke( + "resetTriggerFromErrorState", + new Object[] { triggerKey.getName(), triggerKey.getGroup() }, + new String[] { String.class.getName(), String.class.getName() }); + } + + /** + *

+ * Calls the equivalent method on the 'proxied' QuartzScheduler, + * passing the SchedulingContext associated with this + * instance. + *

+ */ public void addCalendar(String calName, Calendar calendar, boolean replace, boolean updateTriggers) throws SchedulerException { invoke( Index: 3rdParty_sources/quartz/org/quartz/impl/RemoteScheduler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/RemoteScheduler.java (.../RemoteScheduler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/RemoteScheduler.java (.../RemoteScheduler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -818,6 +818,24 @@ * Calls the equivalent method on the 'proxied' QuartzScheduler. *

*/ + public void resetTriggerFromErrorState(TriggerKey triggerKey) + throws SchedulerException { + try { + getRemoteScheduler().resetTriggerFromErrorState(triggerKey); + } catch (RemoteException re) { + throw invalidateHandleCreateException( + "Error communicating with remote scheduler.", re); + } + } + + + + + /** + *

+ * Calls the equivalent method on the 'proxied' QuartzScheduler. + *

+ */ public void addCalendar(String calName, Calendar calendar, boolean replace, boolean updateTriggers) throws SchedulerException { try { Index: 3rdParty_sources/quartz/org/quartz/impl/SchedulerDetailsSetter.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/SchedulerDetailsSetter.java (.../SchedulerDetailsSetter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/SchedulerDetailsSetter.java (.../SchedulerDetailsSetter.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl; import java.lang.reflect.InvocationTargetException; Index: 3rdParty_sources/quartz/org/quartz/impl/SchedulerRepository.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/SchedulerRepository.java (.../SchedulerRepository.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/SchedulerRepository.java (.../SchedulerRepository.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/StdJobRunShellFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/StdJobRunShellFactory.java (.../StdJobRunShellFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/StdJobRunShellFactory.java (.../StdJobRunShellFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/StdScheduler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/StdScheduler.java (.../StdScheduler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/StdScheduler.java (.../StdScheduler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -519,6 +519,25 @@ } /** + * Reset the current state of the identified {@link Trigger} + * from {@link TriggerState#ERROR} to {@link TriggerState#NORMAL} or + * {@link TriggerState#PAUSED} as appropriate. + * + *

Only affects triggers that are in ERROR state - if identified trigger is not + * in that state then the result is a no-op.

+ * + *

The result will be the trigger returning to the normal, waiting to + * be fired state, unless the trigger's group has been paused, in which + * case it will go into the PAUSED state.

+ * + * @see Trigger.TriggerState + */ + public void resetTriggerFromErrorState(TriggerKey triggerKey) + throws SchedulerException { + sched.resetTriggerFromErrorState(triggerKey); + } + + /** *

* Calls the equivalent method on the 'proxied' QuartzScheduler. *

Index: 3rdParty_sources/quartz/org/quartz/impl/StdSchedulerFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/StdSchedulerFactory.java (.../StdSchedulerFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/StdSchedulerFactory.java (.../StdSchedulerFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -17,7 +17,12 @@ package org.quartz.impl; -import org.quartz.*; +import org.quartz.JobListener; +import org.quartz.Scheduler; +import org.quartz.SchedulerConfigException; +import org.quartz.SchedulerException; +import org.quartz.SchedulerFactory; +import org.quartz.TriggerListener; import org.quartz.core.JobRunShellFactory; import org.quartz.core.QuartzScheduler; import org.quartz.core.QuartzSchedulerResources; @@ -31,20 +36,36 @@ import org.quartz.management.ManagementRESTServiceConfiguration; import org.quartz.simpl.RAMJobStore; import org.quartz.simpl.SimpleThreadPool; -import org.quartz.spi.*; -import org.quartz.utils.*; +import org.quartz.spi.ClassLoadHelper; +import org.quartz.spi.InstanceIdGenerator; +import org.quartz.spi.JobFactory; +import org.quartz.spi.JobStore; +import org.quartz.spi.SchedulerPlugin; +import org.quartz.spi.ThreadExecutor; +import org.quartz.spi.ThreadPool; +import org.quartz.utils.ConnectionProvider; +import org.quartz.utils.DBConnectionManager; +import org.quartz.utils.JNDIConnectionProvider; +import org.quartz.utils.C3p0PoolingConnectionProvider; +import org.quartz.utils.PoolingConnectionProvider; +import org.quartz.utils.PropertiesParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; -import java.io.*; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.security.AccessControlException; -import java.sql.SQLException; import java.util.Collection; +import java.util.Enumeration; import java.util.Locale; import java.util.Properties; @@ -121,8 +142,6 @@ public static final String PROP_SCHED_THREAD_NAME = "org.quartz.scheduler.threadName"; - public static final String PROP_SCHED_SKIP_UPDATE_CHECK = "org.quartz.scheduler.skipUpdateCheck"; - public static final String PROP_SCHED_BATCH_TIME_WINDOW = "org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow"; public static final String PROP_SCHED_MAX_BATCH_SIZE = "org.quartz.scheduler.batchTriggerAcquisitionMaxCount"; @@ -451,19 +470,20 @@ } } - initialize(overrideWithSysProps(props)); + initialize(overrideWithSysProps(props, getLog())); } /** * Add all System properties to the given props. Will override * any properties that already exist in the given props. */ - private Properties overrideWithSysProps(Properties props) { + // Visible for testing + static Properties overrideWithSysProps(Properties props, Logger log) { Properties sysProps = null; try { sysProps = System.getProperties(); } catch (AccessControlException e) { - getLog().warn( + log.warn( "Skipping overriding quartz properties with System properties " + "during initialization because of an AccessControlException. " + "This is likely due to not having read/write access for " + @@ -474,7 +494,17 @@ } if (sysProps != null) { - props.putAll(sysProps); + // Use the propertyNames to iterate to avoid + // a possible ConcurrentModificationException + Enumeration en = sysProps.propertyNames(); + while (en.hasMoreElements()) { + Object name = en.nextElement(); + Object value = sysProps.get(name); + if (name instanceof String && value instanceof String) { + // Properties javadoc discourages use of put so we use setProperty + props.setProperty((String) name, (String) value); + } + } } return props; @@ -659,7 +689,6 @@ boolean threadsInheritInitalizersClassLoader = cfg.getBooleanProperty(PROP_SCHED_SCHEDULER_THREADS_INHERIT_CONTEXT_CLASS_LOADER_OF_INITIALIZING_THREAD); - boolean skipUpdateCheck = cfg.getBooleanProperty(PROP_SCHED_SKIP_UPDATE_CHECK, true); long batchTimeWindow = cfg.getLongProperty(PROP_SCHED_BATCH_TIME_WINDOW, 0L); int maxBatchSize = cfg.getIntProperty(PROP_SCHED_MAX_BATCH_SIZE, 1); @@ -980,6 +1009,7 @@ dbMgr = DBConnectionManager.getInstance(); dbMgr.addConnectionProvider(dsNames[i], cp); } else { + String poolingProvider = pp.getStringProperty(PoolingConnectionProvider.POOLING_PROVIDER); String dsDriver = pp.getStringProperty(PoolingConnectionProvider.DB_DRIVER); String dsURL = pp.getStringProperty(PoolingConnectionProvider.DB_URL); @@ -995,13 +1025,31 @@ + dsNames[i]); throw initException; } + // we load even these "core" providers by class name in order to avoid a static dependency on + // the c3p0 and hikaricp libraries + if(poolingProvider != null && poolingProvider.equals(PoolingConnectionProvider.POOLING_PROVIDER_HIKARICP)) { + cpClass = "org.quartz.utils.HikariCpPoolingConnectionProvider"; + } + else { + cpClass = "org.quartz.utils.C3p0PoolingConnectionProvider"; + } + log.info("Using ConnectionProvider class '" + cpClass + "' for data source '" + dsNames[i] + "'"); + try { - PoolingConnectionProvider cp = new PoolingConnectionProvider(pp.getUnderlyingProperties()); + ConnectionProvider cp = null; + try { + Constructor constructor = loadHelper.loadClass(cpClass).getConstructor(Properties.class); + cp = (ConnectionProvider) constructor.newInstance(pp.getUnderlyingProperties()); + } catch (Exception e) { + initException = new SchedulerException("ConnectionProvider class '" + cpClass + + "' could not be instantiated.", e); + throw initException; + } dbMgr = DBConnectionManager.getInstance(); dbMgr.addConnectionProvider(dsNames[i], cp); - // Populate the underlying C3P0 data source pool properties - populateProviderWithExtraProps(cp, pp.getUnderlyingProperties()); + // Populate the underlying C3P0/HikariCP data source pool properties + populateProviderWithExtraProps((PoolingConnectionProvider)cp, pp.getUnderlyingProperties()); } catch (Exception sqle) { initException = new SchedulerException( "Could not initialize DataSource: " + dsNames[i], @@ -1240,7 +1288,6 @@ rsrcs.setJobRunShellFactory(jrsf); rsrcs.setMakeSchedulerThreadDaemon(makeSchedulerThreadDaemon); rsrcs.setThreadsInheritInitializersClassLoadContext(threadsInheritInitalizersClassLoader); - rsrcs.setRunUpdateCheck(!skipUpdateCheck); rsrcs.setBatchTimeWindow(batchTimeWindow); rsrcs.setMaxBatchSize(maxBatchSize); rsrcs.setInterruptJobsOnShutdown(interruptJobsOnShutdown); @@ -1364,11 +1411,17 @@ copyProps.remove(PoolingConnectionProvider.DB_URL); copyProps.remove(PoolingConnectionProvider.DB_USER); copyProps.remove(PoolingConnectionProvider.DB_PASSWORD); - copyProps.remove(PoolingConnectionProvider.DB_IDLE_VALIDATION_SECONDS); copyProps.remove(PoolingConnectionProvider.DB_MAX_CONNECTIONS); - copyProps.remove(PoolingConnectionProvider.DB_MAX_CACHED_STATEMENTS_PER_CONNECTION); - copyProps.remove(PoolingConnectionProvider.DB_VALIDATE_ON_CHECKOUT); copyProps.remove(PoolingConnectionProvider.DB_VALIDATION_QUERY); + copyProps.remove(PoolingConnectionProvider.POOLING_PROVIDER); + + if (cp instanceof C3p0PoolingConnectionProvider) { + copyProps.remove(C3p0PoolingConnectionProvider.DB_MAX_CACHED_STATEMENTS_PER_CONNECTION); + copyProps.remove(C3p0PoolingConnectionProvider.DB_VALIDATE_ON_CHECKOUT); + copyProps.remove(C3p0PoolingConnectionProvider.DB_IDLE_VALIDATION_SECONDS); + copyProps.remove(C3p0PoolingConnectionProvider.DB_DISCARD_IDLE_CONNECTIONS_SECONDS); + } + setBeanProps(cp.getDataSource(), copyProps); } @@ -1395,6 +1448,7 @@ java.lang.reflect.InvocationTargetException, IntrospectionException, SchedulerConfigException { props.remove("class"); + props.remove(PoolingConnectionProvider.POOLING_PROVIDER); BeanInfo bi = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propDescs = bi.getPropertyDescriptors(); Index: 3rdParty_sources/quartz/org/quartz/impl/calendar/AnnualCalendar.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/calendar/AnnualCalendar.java (.../AnnualCalendar.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/calendar/AnnualCalendar.java (.../AnnualCalendar.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/calendar/BaseCalendar.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/calendar/BaseCalendar.java (.../BaseCalendar.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/calendar/BaseCalendar.java (.../BaseCalendar.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/calendar/HolidayCalendar.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/calendar/HolidayCalendar.java (.../HolidayCalendar.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/calendar/HolidayCalendar.java (.../HolidayCalendar.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/calendar/MonthlyCalendar.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/calendar/MonthlyCalendar.java (.../MonthlyCalendar.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/calendar/MonthlyCalendar.java (.../MonthlyCalendar.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/calendar/WeeklyCalendar.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/calendar/WeeklyCalendar.java (.../WeeklyCalendar.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/calendar/WeeklyCalendar.java (.../WeeklyCalendar.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/AttributeRestoringConnectionInvocationHandler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/AttributeRestoringConnectionInvocationHandler.java (.../AttributeRestoringConnectionInvocationHandler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/AttributeRestoringConnectionInvocationHandler.java (.../AttributeRestoringConnectionInvocationHandler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CUBRIDDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CUBRIDDelegate.java (.../CUBRIDDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CUBRIDDelegate.java (.../CUBRIDDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CacheDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CacheDelegate.java (.../CacheDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CacheDelegate.java (.../CacheDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2012 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CalendarIntervalTriggerPersistenceDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CalendarIntervalTriggerPersistenceDelegate.java (.../CalendarIntervalTriggerPersistenceDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CalendarIntervalTriggerPersistenceDelegate.java (.../CalendarIntervalTriggerPersistenceDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl.jdbcjobstore; import java.util.TimeZone; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Constants.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Constants.java (.../Constants.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Constants.java (.../Constants.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CronTriggerPersistenceDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CronTriggerPersistenceDelegate.java (.../CronTriggerPersistenceDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/CronTriggerPersistenceDelegate.java (.../CronTriggerPersistenceDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl.jdbcjobstore; import java.io.IOException; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v6Delegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v6Delegate.java (.../DB2v6Delegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v6Delegate.java (.../DB2v6Delegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v7Delegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v7Delegate.java (.../DB2v7Delegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v7Delegate.java (.../DB2v7Delegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v8Delegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v8Delegate.java (.../DB2v8Delegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DB2v8Delegate.java (.../DB2v8Delegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DBSemaphore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DBSemaphore.java (.../DBSemaphore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DBSemaphore.java (.../DBSemaphore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DriverDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DriverDelegate.java (.../DriverDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/DriverDelegate.java (.../DriverDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/FiredTriggerRecord.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/FiredTriggerRecord.java (.../FiredTriggerRecord.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/FiredTriggerRecord.java (.../FiredTriggerRecord.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/HSQLDBDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/HSQLDBDelegate.java (.../HSQLDBDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/HSQLDBDelegate.java (.../HSQLDBDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/InvalidConfigurationException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/InvalidConfigurationException.java (.../InvalidConfigurationException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/InvalidConfigurationException.java (.../InvalidConfigurationException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JTANonClusteredSemaphore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JTANonClusteredSemaphore.java (.../JTANonClusteredSemaphore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JTANonClusteredSemaphore.java (.../JTANonClusteredSemaphore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreCMT.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreCMT.java (.../JobStoreCMT.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreCMT.java (.../JobStoreCMT.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -245,7 +245,7 @@ return txCallback.execute(conn); } finally { try { - releaseLock(LOCK_TRIGGER_ACCESS, transOwner); + releaseLock(lockName, transOwner); } finally { cleanupConnection(conn); } Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreSupport.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreSupport.java (.../JobStoreSupport.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreSupport.java (.../JobStoreSupport.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -616,7 +616,12 @@ boolean doubleCheckLockMisfireHandler) { this.doubleCheckLockMisfireHandler = doubleCheckLockMisfireHandler; } - + + @Override + public long getAcquireRetryDelay(int failureCount) { + return dbRetryInterval; + } + //--------------------------------------------------------------------------- // interface methods //--------------------------------------------------------------------------- @@ -1035,7 +1040,7 @@ schedSignaler.notifySchedulerListenersFinalized(trig); } else { storeTrigger(conn, trig, null, true, newStateIfNotComplete, - forceState, false); + forceState, recovering); } } @@ -1597,6 +1602,47 @@ } /** + * Reset the current state of the identified {@link Trigger} + * from {@link TriggerState#ERROR} to {@link TriggerState#NORMAL} or + * {@link TriggerState#PAUSED} as appropriate. + * + *

Only affects triggers that are in ERROR state - if identified trigger is not + * in that state then the result is a no-op.

+ * + *

The result will be the trigger returning to the normal, waiting to + * be fired state, unless the trigger's group has been paused, in which + * case it will go into the PAUSED state.

+ */ + public void resetTriggerFromErrorState(final TriggerKey triggerKey) throws JobPersistenceException { + executeInLock( + LOCK_TRIGGER_ACCESS, + new VoidTransactionCallback() { + public void executeVoid(Connection conn) throws JobPersistenceException { + resetTriggerFromErrorState(conn, triggerKey); + } + }); + } + + void resetTriggerFromErrorState(Connection conn, final TriggerKey triggerKey) + throws JobPersistenceException { + + try { + String newState = STATE_WAITING; + + if(getDelegate().isTriggerGroupPaused(conn, triggerKey.getGroup())) { + newState = STATE_PAUSED; + } + + getDelegate().updateTriggerStateFromOtherState(conn, triggerKey, newState, STATE_ERROR); + + getLog().info("Trigger " + triggerKey + " reset from ERROR state to: " + newState); + } catch (SQLException e) { + throw new JobPersistenceException( + "Couldn't reset from error state of trigger (" + triggerKey + "): " + e.getMessage(), e); + } + } + + /** *

* Store the given {@link org.quartz.Calendar}. *

@@ -2833,8 +2879,21 @@ acquiredJobKeysForNoConcurrentExec.add(jobKey); } } + + Date nextFireTime = nextTrigger.getNextFireTime(); + + // A trigger should not return NULL on nextFireTime when fetched from DB. + // But for whatever reason if we do have this (BAD trigger implementation or + // data?), we then should log a warning and continue to next trigger. + // User would need to manually fix these triggers from DB as they will not + // able to be clean up by Quartz since we are not returning it to be processed. + if (nextFireTime == null) { + log.warn("Trigger {} returned null on nextFireTime and yet still exists in DB!", + nextTrigger.getKey()); + continue; + } - if (nextTrigger.getNextFireTime().getTime() > batchEnd) { + if (nextFireTime.getTime() > batchEnd) { break; } // We now have a acquired trigger, let's add to return list. @@ -2847,7 +2906,7 @@ getDelegate().insertFiredTrigger(conn, nextTrigger, STATE_ACQUIRED, null); if(acquiredTriggers.isEmpty()) { - batchEnd = Math.max(nextTrigger.getNextFireTime().getTime(), System.currentTimeMillis()) + timeWindow; + batchEnd = Math.max(nextFireTime.getTime(), System.currentTimeMillis()) + timeWindow; } acquiredTriggers.add(nextTrigger); } @@ -2893,6 +2952,8 @@ try { getDelegate().updateTriggerStateFromOtherState(conn, trigger.getKey(), STATE_WAITING, STATE_ACQUIRED); + getDelegate().updateTriggerStateFromOtherState(conn, + trigger.getKey(), STATE_WAITING, STATE_BLOCKED); getDelegate().deleteFiredTrigger(conn, trigger.getFireInstanceId()); } catch (SQLException e) { throw new JobPersistenceException( @@ -3696,7 +3757,7 @@ * the a transaction template. If no return value is required, execute * should just return null. * - * @see JobStoreSupport#executeInNonManagedTXLock(String, TransactionCallback) + * @see JobStoreSupport#executeInNonManagedTXLock(String, TransactionCallback, TransactionValidator) * @see JobStoreSupport#executeInLock(String, TransactionCallback) * @see JobStoreSupport#executeWithoutLock(TransactionCallback) */ @@ -3712,7 +3773,7 @@ * Implement this interface to provide the code to execute within * the a transaction template that has no return value. * - * @see JobStoreSupport#executeInNonManagedTXLock(String, TransactionCallback) + * @see JobStoreSupport#executeInNonManagedTXLock(String, TransactionCallback, TransactionValidator) */ protected abstract class VoidTransactionCallback implements TransactionCallback { public final Void execute(Connection conn) throws JobPersistenceException { Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreTX.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreTX.java (.../JobStoreTX.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/JobStoreTX.java (.../JobStoreTX.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/LockException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/LockException.java (.../LockException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/LockException.java (.../LockException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/MSSQLDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/MSSQLDelegate.java (.../MSSQLDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/MSSQLDelegate.java (.../MSSQLDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/NoSuchDelegateException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/NoSuchDelegateException.java (.../NoSuchDelegateException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/NoSuchDelegateException.java (.../NoSuchDelegateException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/PointbaseDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/PointbaseDelegate.java (.../PointbaseDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/PointbaseDelegate.java (.../PointbaseDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/PostgreSQLDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/PostgreSQLDelegate.java (.../PostgreSQLDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/PostgreSQLDelegate.java (.../PostgreSQLDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SchedulerStateRecord.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SchedulerStateRecord.java (.../SchedulerStateRecord.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SchedulerStateRecord.java (.../SchedulerStateRecord.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Semaphore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Semaphore.java (.../Semaphore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Semaphore.java (.../Semaphore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,20 +1,19 @@ /* - * Copyright 2001-2009 Terracotta, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations * under the License. - * + * */ - package org.quartz.impl.jdbcjobstore; import java.sql.Connection; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimplePropertiesTriggerPersistenceDelegateSupport.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimplePropertiesTriggerPersistenceDelegateSupport.java (.../SimplePropertiesTriggerPersistenceDelegateSupport.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimplePropertiesTriggerPersistenceDelegateSupport.java (.../SimplePropertiesTriggerPersistenceDelegateSupport.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl.jdbcjobstore; import java.io.IOException; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimplePropertiesTriggerProperties.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimplePropertiesTriggerProperties.java (.../SimplePropertiesTriggerProperties.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimplePropertiesTriggerProperties.java (.../SimplePropertiesTriggerProperties.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl.jdbcjobstore; import java.math.BigDecimal; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimpleSemaphore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimpleSemaphore.java (.../SimpleSemaphore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimpleSemaphore.java (.../SimpleSemaphore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimpleTriggerPersistenceDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimpleTriggerPersistenceDelegate.java (.../SimpleTriggerPersistenceDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SimpleTriggerPersistenceDelegate.java (.../SimpleTriggerPersistenceDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl.jdbcjobstore; import java.io.IOException; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdJDBCConstants.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdJDBCConstants.java (.../StdJDBCConstants.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdJDBCConstants.java (.../StdJDBCConstants.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdJDBCDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdJDBCDelegate.java (.../StdJDBCDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdJDBCDelegate.java (.../StdJDBCDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -1160,7 +1160,7 @@ // save some clock cycles by unnecessarily writing job data blob ... boolean updateJobData = trigger.getJobDataMap().isDirty(); ByteArrayOutputStream baos = null; - if(updateJobData && trigger.getJobDataMap().size() > 0) { + if(updateJobData) { baos = serializeJobData(trigger.getJobDataMap()); } @@ -2612,7 +2612,7 @@ ps.setBigDecimal(3, new BigDecimal(String.valueOf(noEarlierThan))); rs = ps.executeQuery(); - while (rs.next() && nextTriggers.size() <= maxCount) { + while (rs.next() && nextTriggers.size() < maxCount) { nextTriggers.add(triggerKey( rs.getString(COL_TRIGGER_NAME), rs.getString(COL_TRIGGER_GROUP))); Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdRowLockSemaphore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdRowLockSemaphore.java (.../StdRowLockSemaphore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/StdRowLockSemaphore.java (.../StdRowLockSemaphore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -62,7 +62,29 @@ public StdRowLockSemaphore(String tablePrefix, String schedName, String selectWithLockSQL) { super(tablePrefix, schedName, selectWithLockSQL != null ? selectWithLockSQL : SELECT_FOR_LOCK, INSERT_LOCK); } - + + // Data Members + + // Configurable lock retry parameters + private int maxRetry = 3; + private long retryPeriod = 1000L; + + public void setMaxRetry(int maxRetry) { + this.maxRetry = maxRetry; + } + + public void setRetryPeriod(long retryPeriod) { + this.retryPeriod = retryPeriod; + } + + public int getMaxRetry() { + return maxRetry; + } + + public long getRetryPeriod() { + return retryPeriod; + } + /* * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * @@ -82,6 +104,11 @@ // attempt lock two times (to work-around possible race conditions in inserting the lock row the first time running) int count = 0; + + // Configurable lock retry attempts + int maxRetryLocal = this.maxRetry; + long retryPeriodLocal = this.retryPeriod; + do { count++; try { @@ -108,10 +135,10 @@ int res = ps.executeUpdate(); if(res != 1) { - if(count < 3) { + if(count < maxRetryLocal) { // pause a bit to give another thread some time to commit the insert of the new lock row try { - Thread.sleep(1000L); + Thread.sleep(retryPeriodLocal); } catch (InterruptedException ignore) { Thread.currentThread().interrupt(); } @@ -140,13 +167,13 @@ if (getLog().isDebugEnabled()) { getLog().debug( "Lock '" + lockName + "' was not obtained by: " + - Thread.currentThread().getName() + (count < 3 ? " - will try again." : "")); + Thread.currentThread().getName() + (count < maxRetryLocal ? " - will try again." : "")); } - if(count < 3) { + if(count < maxRetryLocal) { // pause a bit to give another thread some time to commit the insert of the new lock row try { - Thread.sleep(1000L); + Thread.sleep(retryPeriodLocal); } catch (InterruptedException ignore) { Thread.currentThread().interrupt(); } @@ -170,7 +197,7 @@ } } } - } while(count < 4); + } while(count < (maxRetryLocal + 1)); throw new LockException("Failure obtaining db row lock, reached maximum number of attempts. Initial exception (if any) attached as root cause.", initCause); } Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SybaseDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SybaseDelegate.java (.../SybaseDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/SybaseDelegate.java (.../SybaseDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2010 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TablePrefixAware.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TablePrefixAware.java (.../TablePrefixAware.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TablePrefixAware.java (.../TablePrefixAware.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TriggerPersistenceDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TriggerPersistenceDelegate.java (.../TriggerPersistenceDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TriggerPersistenceDelegate.java (.../TriggerPersistenceDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.impl.jdbcjobstore; import java.io.IOException; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TriggerStatus.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TriggerStatus.java (.../TriggerStatus.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/TriggerStatus.java (.../TriggerStatus.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/UpdateLockRowSemaphore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/UpdateLockRowSemaphore.java (.../UpdateLockRowSemaphore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/UpdateLockRowSemaphore.java (.../UpdateLockRowSemaphore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Util.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Util.java (.../Util.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/Util.java (.../Util.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/WebLogicDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/WebLogicDelegate.java (.../WebLogicDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/WebLogicDelegate.java (.../WebLogicDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/liquibase.quartz.init.xml =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/liquibase.quartz.init.xml (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/liquibase.quartz.init.xml (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/oracle/OracleDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/oracle/OracleDelegate.java (.../OracleDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/oracle/OracleDelegate.java (.../OracleDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/oracle/weblogic/WebLogicOracleDelegate.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/oracle/weblogic/WebLogicOracleDelegate.java (.../WebLogicOracleDelegate.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/oracle/weblogic/WebLogicOracleDelegate.java (.../WebLogicOracleDelegate.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_cloudscape.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_cloudscape.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_cloudscape.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,142 @@ +# +# Thanks to Srinivas Venkatarangaiah for submitting this file's contents +# +# In your Quartz properties file, you'll need to set +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.CloudscapeDelegate +# +# Known to work with Cloudscape 3.6.4 (should work with others) +# + + +create table qrtz_job_details ( + sched_name varchar(120) not null, + job_name varchar(200) not null, + job_group varchar(200) not null, + description varchar(250) , + job_class_name varchar(250) not null, + is_durable varchar(5) not null, + is_nonconcurrent varchar(5) not null, + is_update_data varchar(5) not null, + requests_recovery varchar(5) not null, + job_data long varbinary, +primary key (sched_name,job_name,job_group) +); + +create table qrtz_triggers( + sched_name varchar(120) not null, + trigger_name varchar(200) not null, + trigger_group varchar(200) not null, + job_name varchar(200) not null, + job_group varchar(200) not null, + description varchar(250) , + next_fire_time longint, + prev_fire_time longint, + priority integer, + trigger_state varchar(16) not null, + trigger_type varchar(8) not null, + start_time longint not null, + end_time longint, + calendar_name varchar(200), + misfire_instr smallint, + job_data long varbinary, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +); + +create table qrtz_simple_triggers( + sched_name varchar(120) not null, + trigger_name varchar(200) not null, + trigger_group varchar(200) not null, + repeat_count longint not null, + repeat_interval longint not null, + times_triggered longint not null, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_cron_triggers( + sched_name varchar(120) not null, + trigger_name varchar(200) not null, + trigger_group varchar(200) not null, + cron_expression varchar(120) not null, + time_zone_id varchar(80), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +CREATE TABLE qrtz_simprop_triggers + ( + sched_name varchar(120) not null, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 longint NULL, + LONG_PROP_2 longint NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 varchar(5) NULL, + BOOL_PROP_2 varchar(5) NULL, + PRIMARY KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(sched_name,TRIGGER_NAME,TRIGGER_GROUP) +); + +create table qrtz_blob_triggers( + sched_name varchar(120) not null, + trigger_name varchar(200) not null, + trigger_group varchar(200) not null, + blob_data long varbinary , +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_calendars( + sched_name varchar(120) not null, + calendar_name varchar(200) not null, + calendar long varbinary not null, +primary key (sched_name,calendar_name) +); + +create table qrtz_paused_trigger_grps + ( + sched_name varchar(120) not null, + trigger_group varchar(200) not null, +primary key (sched_name,trigger_group) +); + +create table qrtz_fired_triggers( + sched_name varchar(120) not null, + entry_id varchar(95) not null, + trigger_name varchar(200) not null, + trigger_group varchar(200) not null, + instance_name varchar(200) not null, + fired_time longint not null, + sched_time longint not null, + priority integer not null, + state varchar(16) not null, + job_name varchar(200) null, + job_group varchar(200) null, + is_nonconcurrent varchar(5) null, + requests_recovery varchar(5) null, +primary key (sched_name,entry_id) +); + +create table qrtz_scheduler_state + ( + sched_name varchar(120) not null, + instance_name varchar(200) not null, + last_checkin_time longint not null, + checkin_interval longint not null, +primary key (sched_name,instance_name) +); + +create table qrtz_locks + ( + sched_name varchar(120) not null, + lock_name varchar(40) not null, +primary key (sched_name,lock_name) +); Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_cubrid.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_cubrid.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_cubrid.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,188 @@ + +-- Thanks to Timothy Anyona for this script +-- CUBRID 8.4.1+ + +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.CUBRIDDelegate + + +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + + +CREATE TABLE QRTZ_JOB_DETAILS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE BIT(1) NOT NULL, + IS_NONCONCURRENT BIT(1) NOT NULL, + IS_UPDATE_DATA BIT(1) NOT NULL, + REQUESTS_RECOVERY BIT(1) NOT NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT NULL, + PREV_FIRE_TIME BIGINT NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT NOT NULL, + END_TIME BIGINT NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT NOT NULL, + REPEAT_INTERVAL BIGINT NOT NULL, + TIMES_TRIGGERED BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(200) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 BIT(1) NULL, + BOOL_PROP_2 BIT(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BLOB NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT NOT NULL, + SCHED_TIME BIGINT NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT BIT(1) NULL, + REQUESTS_RECOVERY BIT(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT NOT NULL, + CHECKIN_INTERVAL BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + + +CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP); + + +CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME); +CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME); +CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,148 @@ +# +# Thanks to Horia Muntean for submitting this.... +# +# .. known to work with DB2 7.1 and the JDBC driver "COM.ibm.db2.jdbc.net.DB2Driver" +# .. likely to work with others... +# +# In your Quartz properties file, you'll need to set +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +# +# If you're using DB2 6.x you'll want to set this property to +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.DB2v6Delegate +# +# Note that the blob column size (e.g. blob(2000)) dictates the amount of data that can be stored in +# that blob - i.e. limits the amount of data you can put into your JobDataMap +# + + +create table qrtz_job_details ( + sched_name varchar(120) not null, + job_name varchar(80) not null, + job_group varchar(80) not null, + description varchar(120) null, + job_class_name varchar(128) not null, + is_durable varchar(1) not null, + is_nonconcurrent varchar(1) not null, + is_update_data varchar(1) not null, + requests_recovery varchar(1) not null, + job_data blob(2000), + primary key (sched_name,job_name,job_group) +) + +create table qrtz_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + job_name varchar(80) not null, + job_group varchar(80) not null, + description varchar(120) null, + next_fire_time bigint, + prev_fire_time bigint, + priority integer, + trigger_state varchar(16) not null, + trigger_type varchar(8) not null, + start_time bigint not null, + end_time bigint, + calendar_name varchar(80), + misfire_instr smallint, + job_data blob(2000), + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +) + +create table qrtz_simple_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + repeat_count bigint not null, + repeat_interval bigint not null, + times_triggered bigint not null, + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +) + +create table qrtz_cron_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + cron_expression varchar(120) not null, + time_zone_id varchar(80), + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +) + +CREATE TABLE qrtz_simprop_triggers + ( + sched_name varchar(120) not null, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(sched_name,TRIGGER_NAME,TRIGGER_GROUP) +) + +create table qrtz_blob_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + blob_data blob(2000) null, + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +) + +create table qrtz_calendars( + sched_name varchar(120) not null, + calendar_name varchar(80) not null, + calendar blob(2000) not null, + primary key (sched_name,calendar_name) +) + +create table qrtz_fired_triggers( + sched_name varchar(120) not null, + entry_id varchar(95) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + instance_name varchar(80) not null, + fired_time bigint not null, + sched_time bigint not null, + priority integer not null, + state varchar(16) not null, + job_name varchar(80) null, + job_group varchar(80) null, + is_nonconcurrent varchar(1) null, + requests_recovery varchar(1) null, + primary key (sched_name,entry_id) +); + + +create table qrtz_paused_trigger_grps( + sched_name varchar(120) not null, + trigger_group varchar(80) not null, + primary key (sched_name,trigger_group) +); + +create table qrtz_scheduler_state ( + sched_name varchar(120) not null, + instance_name varchar(80) not null, + last_checkin_time bigint not null, + checkin_interval bigint not null, + primary key (sched_name,instance_name) +); + +create table qrtz_locks + ( + sched_name varchar(120) not null, + lock_name varchar(40) not null, + primary key (sched_name,lock_name) +); Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v72.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v72.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v72.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,163 @@ +-- +-- Thanks to Horia Muntean for submitting this, Mikkel Heisterberg for updating it +-- +-- .. known to work with DB2 7.2 and the JDBC driver "COM.ibm.db2.jdbc.net.DB2Driver" +-- .. likely to work with others... +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.DB2v7Delegate +-- +-- or +-- +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +-- +-- If you're using DB2 6.x you'll want to set this property to +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.DB2v6Delegate +-- +-- Note that the blob column size (e.g. blob(2000)) dictates the amount of data that can be stored in +-- that blob - i.e. limits the amount of data you can put into your JobDataMap +-- + +DROP TABLE QRTZ_FIRED_TRIGGERS; +DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE QRTZ_SCHEDULER_STATE; +DROP TABLE QRTZ_LOCKS; +DROP TABLE QRTZ_SIMPLE_TRIGGERS; +DROP TABLE QRTZ_SIMPROP_TRIGGERS; +DROP TABLE QRTZ_CRON_TRIGGERS; +DROP TABLE QRTZ_TRIGGERS; +DROP TABLE QRTZ_JOB_DETAILS; +DROP TABLE QRTZ_CALENDARS; +DROP TABLE QRTZ_BLOB_TRIGGERS; + +create table qrtz_job_details ( + sched_name varchar(120) not null, + job_name varchar(80) not null, + job_group varchar(80) not null, + description varchar(120), + job_class_name varchar(128) not null, + is_durable varchar(1) not null, + is_nonconcurrent varchar(1) not null, + is_update_data varchar(1) not null, + requests_recovery varchar(1) not null, + job_data blob(2000), + primary key (sched_name,job_name,job_group) +); + +create table qrtz_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + job_name varchar(80) not null, + job_group varchar(80) not null, + description varchar(120), + next_fire_time bigint, + prev_fire_time bigint, + priority integer, + trigger_state varchar(16) not null, + trigger_type varchar(8) not null, + start_time bigint not null, + end_time bigint, + calendar_name varchar(80), + misfire_instr smallint, + job_data blob(2000), + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +); + +create table qrtz_simple_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + repeat_count bigint not null, + repeat_interval bigint not null, + times_triggered bigint not null, + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_cron_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + cron_expression varchar(120) not null, + time_zone_id varchar(80), + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +CREATE TABLE qrtz_simprop_triggers + ( + sched_name varchar(120) not null, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(sched_name,TRIGGER_NAME,TRIGGER_GROUP) +); + +create table qrtz_blob_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + blob_data blob(2000), + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_calendars( + sched_name varchar(120) not null, + calendar_name varchar(80) not null, + calendar blob(2000) not null, + primary key (sched_name,calendar_name) +); + +create table qrtz_fired_triggers( + sched_name varchar(120) not null, + entry_id varchar(95) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + instance_name varchar(80) not null, + fired_time bigint not null, + sched_time bigint not null, + priority integer not null, + state varchar(16) not null, + job_name varchar(80), + job_group varchar(80), + is_nonconcurrent varchar(1), + requests_recovery varchar(1), + primary key (sched_name,entry_id) +); + + +create table qrtz_paused_trigger_grps( + sched_name varchar(120) not null, + trigger_group varchar(80) not null, + primary key (sched_name,trigger_group) +); + +create table qrtz_scheduler_state ( + sched_name varchar(120) not null, + instance_name varchar(80) not null, + last_checkin_time bigint not null, + checkin_interval bigint not null, + primary key (sched_name,instance_name) +); + +create table qrtz_locks + ( + sched_name varchar(120) not null, + lock_name varchar(40) not null, + primary key (sched_name,lock_name) +); Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v8.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v8.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v8.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,151 @@ +# +# Updated by Claudiu Crisan (claudiu.crisan@schartner.net) +# SQL scripts for DB2 ver 8.1 +# +# Changes: +# - "varchar(1)" replaced with "integer" +# - "field_name varchar(xxx) not null" replaced with "field_name varchar(xxx)" +# + + +DROP TABLE QRTZ_FIRED_TRIGGERS; +DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE QRTZ_SCHEDULER_STATE; +DROP TABLE QRTZ_LOCKS; +DROP TABLE QRTZ_SIMPLE_TRIGGERS; +DROP TABLE QRTZ_SIMPROP_TRIGGERS; +DROP TABLE QRTZ_CRON_TRIGGERS; +DROP TABLE QRTZ_TRIGGERS; +DROP TABLE QRTZ_JOB_DETAILS; +DROP TABLE QRTZ_CALENDARS; +DROP TABLE QRTZ_BLOB_TRIGGERS; + +create table qrtz_job_details( +sched_name varchar(120) not null, +job_name varchar(80) not null, +job_group varchar(80) not null, +description varchar(120), +job_class_name varchar(128) not null, +is_durable integer not null, +is_nonconcurrent integer not null, +is_update_data integer not null, +requests_recovery integer not null, +job_data blob(2000), +primary key (sched_name,job_name,job_group) +); + +create table qrtz_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +job_name varchar(80) not null, +job_group varchar(80) not null, +description varchar(120), +next_fire_time bigint, +prev_fire_time bigint, +priority integer, +trigger_state varchar(16) not null, +trigger_type varchar(8) not null, +start_time bigint not null, +end_time bigint, +calendar_name varchar(80), +misfire_instr smallint, +job_data blob(2000), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +); + +create table qrtz_simple_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +repeat_count bigint not null, +repeat_interval bigint not null, +times_triggered bigint not null, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_cron_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +cron_expression varchar(120) not null, +time_zone_id varchar(80), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +CREATE TABLE qrtz_simprop_triggers + ( + sched_name varchar(120) not null, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(sched_name,TRIGGER_NAME,TRIGGER_GROUP) +); + +create table qrtz_blob_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +blob_data blob(2000), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_calendars( +sched_name varchar(120) not null, +calendar_name varchar(80) not null, +calendar blob(2000) not null, +primary key (calendar_name) +); + +create table qrtz_fired_triggers( +sched_name varchar(120) not null, +entry_id varchar(95) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +instance_name varchar(80) not null, +fired_time bigint not null, +sched_time bigint not null, +priority integer not null, +state varchar(16) not null, +job_name varchar(80), +job_group varchar(80), +is_nonconcurrent integer, +requests_recovery integer, +primary key (sched_name,entry_id) +); + +create table qrtz_paused_trigger_grps( +sched_name varchar(120) not null, +trigger_group varchar(80) not null, +primary key (sched_name,trigger_group) +); + +create table qrtz_scheduler_state( +sched_name varchar(120) not null, +instance_name varchar(80) not null, +last_checkin_time bigint not null, +checkin_interval bigint not null, +primary key (sched_name,instance_name) +); + +create table qrtz_locks( +sched_name varchar(120) not null, +lock_name varchar(40) not null, +primary key (sched_name,lock_name) +); Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v95.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v95.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_db2_v95.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,141 @@ +DROP TABLE QRTZ_FIRED_TRIGGERS; +DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE QRTZ_SCHEDULER_STATE; +DROP TABLE QRTZ_LOCKS; +DROP TABLE QRTZ_SIMPLE_TRIGGERS; +DROP TABLE QRTZ_SIMPROP_TRIGGERS; +DROP TABLE QRTZ_CRON_TRIGGERS; +DROP TABLE QRTZ_TRIGGERS; +DROP TABLE QRTZ_JOB_DETAILS; +DROP TABLE QRTZ_CALENDARS; +DROP TABLE QRTZ_BLOB_TRIGGERS; + +create table qrtz_job_details( +sched_name varchar(120) not null, +job_name varchar(80) not null, +job_group varchar(80) not null, +description varchar(120), +job_class_name varchar(128) not null, +is_durable integer not null, +is_nonconcurrent integer not null, +is_update_data integer not null, +requests_recovery integer not null, +job_data blob(2000), +primary key (sched_name,job_name,job_group) +); + +create table qrtz_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +job_name varchar(80) not null, +job_group varchar(80) not null, +description varchar(120), +next_fire_time bigint, +prev_fire_time bigint, +priority integer, +trigger_state varchar(16) not null, +trigger_type varchar(8) not null, +start_time bigint not null, +end_time bigint, +calendar_name varchar(80), +misfire_instr smallint, +job_data blob(2000), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +); + +create table qrtz_simple_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +repeat_count bigint not null, +repeat_interval bigint not null, +times_triggered bigint not null, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_cron_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +cron_expression varchar(120) not null, +time_zone_id varchar(80), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +CREATE TABLE qrtz_simprop_triggers + ( + sched_name varchar(120) not null, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512), + STR_PROP_2 VARCHAR(512), + STR_PROP_3 VARCHAR(512), + INT_PROP_1 INT, + INT_PROP_2 INT, + LONG_PROP_1 BIGINT, + LONG_PROP_2 BIGINT, + DEC_PROP_1 NUMERIC(13,4), + DEC_PROP_2 NUMERIC(13,4), + BOOL_PROP_1 VARCHAR(1), + BOOL_PROP_2 VARCHAR(1), + PRIMARY KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(sched_name,TRIGGER_NAME,TRIGGER_GROUP) +); + +create table qrtz_blob_triggers( +sched_name varchar(120) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +blob_data blob(2000), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_calendars( +sched_name varchar(120) not null, +calendar_name varchar(80) not null, +calendar blob(2000) not null, +primary key (calendar_name) +); + +create table qrtz_fired_triggers( +sched_name varchar(120) not null, +entry_id varchar(95) not null, +trigger_name varchar(80) not null, +trigger_group varchar(80) not null, +instance_name varchar(80) not null, +fired_time bigint not null, +sched_time bigint not null, +priority integer not null, +state varchar(16) not null, +job_name varchar(80), +job_group varchar(80), +is_nonconcurrent integer, +requests_recovery integer, +primary key (sched_name,entry_id) +); + +create table qrtz_paused_trigger_grps( +sched_name varchar(120) not null, +trigger_group varchar(80) not null, +primary key (sched_name,trigger_group) +); + +create table qrtz_scheduler_state( +sched_name varchar(120) not null, +instance_name varchar(80) not null, +last_checkin_time bigint not null, +checkin_interval bigint not null, +primary key (sched_name,instance_name) +); + +create table qrtz_locks( +sched_name varchar(120) not null, +lock_name varchar(40) not null, +primary key (sched_name,lock_name) +); Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_derby.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_derby.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_derby.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,174 @@ +-- +-- Apache Derby scripts by Steve Stewart, updated by Ronald Pomeroy +-- Based on Srinivas Venkatarangaiah's file for Cloudscape +-- +-- Known to work with Apache Derby 10.0.2.1, or 10.6.2.1 +-- +-- Updated by Zemian Deng on 08/21/2011 +-- * Fixed nullable fields on qrtz_simprop_triggers table. +-- * Added Derby QuickStart comments and drop tables statements. +-- +-- DerbyDB + Quartz Quick Guide: +-- * Derby comes with Oracle JDK! For Java6, it default install into C:/Program Files/Sun/JavaDB on Windows. +-- 1. Create a derby.properties file under JavaDB directory, and have the following: +-- derby.connection.requireAuthentication = true +-- derby.authentication.provider = BUILTIN +-- derby.user.quartz2=quartz2123 +-- 2. Start the DB server by running bin/startNetworkServer script. +-- 3. On a new terminal, run bin/ij tool to bring up an SQL prompt, then run: +-- connect 'jdbc:derby://localhost:1527/quartz2;user=quartz2;password=quartz2123;create=true'; +-- run 'quartz/docs/dbTables/tables_derby.sql'; +-- Now in quartz.properties, you may use these properties: +-- org.quartz.dataSource.quartzDataSource.driver = org.apache.derby.jdbc.ClientDriver +-- org.quartz.dataSource.quartzDataSource.URL = jdbc:derby://localhost:1527/quartz2 +-- org.quartz.dataSource.quartzDataSource.user = quartz2 +-- org.quartz.dataSource.quartzDataSource.password = quartz2123 +-- + +-- Auto drop and reset tables +-- Derby doesn't support if exists condition on table drop, so user must manually do this step if needed to. +-- drop table qrtz_fired_triggers; +-- drop table qrtz_paused_trigger_grps; +-- drop table qrtz_scheduler_state; +-- drop table qrtz_locks; +-- drop table qrtz_simple_triggers; +-- drop table qrtz_simprop_triggers; +-- drop table qrtz_cron_triggers; +-- drop table qrtz_blob_triggers; +-- drop table qrtz_triggers; +-- drop table qrtz_job_details; +-- drop table qrtz_calendars; + +create table qrtz_job_details ( +sched_name varchar(120) not null, +job_name varchar(200) not null, +job_group varchar(200) not null, +description varchar(250) , +job_class_name varchar(250) not null, +is_durable varchar(5) not null, +is_nonconcurrent varchar(5) not null, +is_update_data varchar(5) not null, +requests_recovery varchar(5) not null, +job_data blob, +primary key (sched_name,job_name,job_group) +); + +create table qrtz_triggers( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +job_name varchar(200) not null, +job_group varchar(200) not null, +description varchar(250), +next_fire_time bigint, +prev_fire_time bigint, +priority integer, +trigger_state varchar(16) not null, +trigger_type varchar(8) not null, +start_time bigint not null, +end_time bigint, +calendar_name varchar(200), +misfire_instr smallint, +job_data blob, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +); + +create table qrtz_simple_triggers( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +repeat_count bigint not null, +repeat_interval bigint not null, +times_triggered bigint not null, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_cron_triggers( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +cron_expression varchar(120) not null, +time_zone_id varchar(80), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_simprop_triggers + ( + sched_name varchar(120) not null, + trigger_name varchar(200) not null, + trigger_group varchar(200) not null, + str_prop_1 varchar(512), + str_prop_2 varchar(512), + str_prop_3 varchar(512), + int_prop_1 int, + int_prop_2 int, + long_prop_1 bigint, + long_prop_2 bigint, + dec_prop_1 numeric(13,4), + dec_prop_2 numeric(13,4), + bool_prop_1 varchar(5), + bool_prop_2 varchar(5), + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) + references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_blob_triggers( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +blob_data blob, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_calendars( +sched_name varchar(120) not null, +calendar_name varchar(200) not null, +calendar blob not null, +primary key (sched_name,calendar_name) +); + +create table qrtz_paused_trigger_grps + ( + sched_name varchar(120) not null, + trigger_group varchar(200) not null, +primary key (sched_name,trigger_group) +); + +create table qrtz_fired_triggers( +sched_name varchar(120) not null, +entry_id varchar(95) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +instance_name varchar(200) not null, +fired_time bigint not null, +sched_time bigint not null, +priority integer not null, +state varchar(16) not null, +job_name varchar(200), +job_group varchar(200), +is_nonconcurrent varchar(5), +requests_recovery varchar(5), +primary key (sched_name,entry_id) +); + +create table qrtz_scheduler_state + ( + sched_name varchar(120) not null, + instance_name varchar(200) not null, + last_checkin_time bigint not null, + checkin_interval bigint not null, +primary key (sched_name,instance_name) +); + +create table qrtz_locks + ( + sched_name varchar(120) not null, + lock_name varchar(40) not null, +primary key (sched_name,lock_name) +); + Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_derby_previous.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_derby_previous.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_derby_previous.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,141 @@ +-- +-- Apache Derby scripts by Steve Stewart. +-- Based on Srinivas Venkatarangaiah's file for Cloudscape +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.CloudscapeDelegate +-- +-- Known to work with Apache Derby 10.0.2.1 +-- + +create table qrtz_job_details ( +sched_name varchar(120) not null, +job_name varchar(200) not null, +job_group varchar(200) not null, +description varchar(250) , +job_class_name varchar(250) not null, +is_durable varchar(5) not null, +is_nonconcurrent varchar(5) not null, +is_update_data varchar(5) not null, +requests_recovery varchar(5) not null, +job_data blob, +primary key (sched_name,job_name,job_group) +); + +create table qrtz_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +job_name varchar(200) not null, +job_group varchar(200) not null, +description varchar(250) , +next_fire_time bigint, +prev_fire_time bigint, +priority integer, +trigger_state varchar(16) not null, +trigger_type varchar(8) not null, +start_time bigint not null, +end_time bigint, +calendar_name varchar(200), +misfire_instr smallint, +job_data blob, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +); + +create table qrtz_simple_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +repeat_count bigint not null, +repeat_interval bigint not null, +times_triggered bigint not null, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_cron_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +cron_expression varchar(120) not null, +time_zone_id varchar(80), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_simprop_triggers +( + sched_name varchar(120) not null, + trigger_name varchar(200) not null, + trigger_group varchar(200) not null, + str_prop_1 varchar(512), + str_prop_2 varchar(512), + str_prop_3 varchar(512), + int_prop_1 int, + int_prop_2 int, + long_prop_1 bigint, + long_prop_2 bigint, + dec_prop_1 numeric(13,4), + dec_prop_2 numeric(13,4), + bool_prop_1 varchar(5), + bool_prop_2 varchar(5), + primary key (sched_name,trigger_name,trigger_group), + foreign key (sched_name,trigger_name,trigger_group) + references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_blob_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +blob_data blob , +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_calendars ( +sched_name varchar(120) not null, +calendar_name varchar(200) not null, +calendar blob not null, +primary key (sched_name,calendar_name) +); + +create table qrtz_paused_trigger_grps ( +sched_name varchar(120) not null, +trigger_group varchar(200) not null, +primary key (sched_name,trigger_group) +); + +create table qrtz_fired_triggers ( +sched_name varchar(120) not null, +entry_id varchar(95) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +instance_name varchar(200) not null, +fired_time bigint not null, +sched_time bigint not null, +priority integer not null, +state varchar(16) not null, +job_name varchar(200), +job_group varchar(200), +is_nonconcurrent varchar(5), +requests_recovery varchar(5), +primary key (sched_name,entry_id) +); + +create table qrtz_scheduler_state ( +sched_name varchar(120) not null, +instance_name varchar(200) not null, +last_checkin_time bigint not null, +checkin_interval bigint not null, +primary key (sched_name,instance_name) +); + +create table qrtz_locks ( +sched_name varchar(120) not null, +lock_name varchar(40) not null, +primary key (sched_name,lock_name) +); + +commit; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_firebird.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_firebird.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_firebird.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,154 @@ + +-- +-- Thanks to Leonardo Alves +-- + + +DROP TABLE QRTZ_FIRED_TRIGGERS; +DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE QRTZ_SCHEDULER_STATE; +DROP TABLE QRTZ_LOCKS; +DROP TABLE QRTZ_SIMPLE_TRIGGERS; +DROP TABLE QRTZ_SIMPROP_TRIGGERS; +DROP TABLE QRTZ_CRON_TRIGGERS; +DROP TABLE QRTZ_BLOB_TRIGGERS; +DROP TABLE QRTZ_TRIGGERS; +DROP TABLE QRTZ_JOB_DETAILS; +DROP TABLE QRTZ_CALENDARS; + + +CREATE TABLE QRTZ_JOB_DETAILS ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(60) NOT NULL, + JOB_GROUP VARCHAR(60) NOT NULL, + DESCRIPTION VARCHAR(120), + JOB_CLASS_NAME VARCHAR(128) NOT NULL, + IS_DURABLE VARCHAR(1) NOT NULL, + IS_NONCONCURRENT VARCHAR(1) NOT NULL, + IS_UPDATE_DATA VARCHAR(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR(1) NOT NULL, + JOB_DATA BLOB, + CONSTRAINT PK_QRTZ_JOB_DETAILS PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(60) NOT NULL, + TRIGGER_GROUP VARCHAR(60) NOT NULL, + JOB_NAME VARCHAR(60) NOT NULL, + JOB_GROUP VARCHAR(60) NOT NULL, + DESCRIPTION VARCHAR(120), + NEXT_FIRE_TIME BIGINT, + PREV_FIRE_TIME BIGINT, + PRIORITY INTEGER, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT NOT NULL, + END_TIME BIGINT, + CALENDAR_NAME VARCHAR(60), + MISFIRE_INSTR SMALLINT, + JOB_DATA BLOB, + CONSTRAINT PK_QRTZ_TRIGGERS PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT FK_QRTZ_TRIGGERS_1 FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(60) NOT NULL, + TRIGGER_GROUP VARCHAR(60) NOT NULL, + REPEAT_COUNT BIGINT NOT NULL, + REPEAT_INTERVAL BIGINT NOT NULL, + TIMES_TRIGGERED BIGINT NOT NULL, + CONSTRAINT PK_QRTZ_SIMPLE_TRIGGERS PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_1 FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + CONSTRAINT PK_QRTZ_SIMPROP_TRIGGERS PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_1 FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(60) NOT NULL, + TRIGGER_GROUP VARCHAR(60) NOT NULL, + CRON_EXPRESSION VARCHAR(120) NOT NULL, + TIME_ZONE_ID VARCHAR(60), + CONSTRAINT PK_QRTZ_SIMPLE_TRG PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT FK_QRTZ_SIMPLE_TRG_1 FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(60) NOT NULL, + TRIGGER_GROUP VARCHAR(60) NOT NULL, + BLOB_DATA BLOB, + CONSTRAINT PK_QRTZ_BLOB_TRIGGERS PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT FK_QRTZ_BLOB_TRIGGERS_1 FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(60) NOT NULL, + CALENDAR BLOB NOT NULL, + CONSTRAINT PK_QRTZ_CALENDARS PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(60) NOT NULL, + CONSTRAINT PK_QRTZ_PAUSED_TRIGGER_GRPS PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(60) NOT NULL, + TRIGGER_GROUP VARCHAR(60) NOT NULL, + INSTANCE_NAME VARCHAR(80) NOT NULL, + FIRED_TIME BIGINT NOT NULL, + SCHED_TIME BIGINT NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(60), + JOB_GROUP VARCHAR(60), + IS_NONCONCURRENT VARCHAR(1), + REQUESTS_RECOVERY VARCHAR(1), + CONSTRAINT PK_QRTZ_FIRED_TRIGGERS PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(80) NOT NULL, + LAST_CHECKIN_TIME BIGINT NOT NULL, + CHECKIN_INTERVAL BIGINT NOT NULL, + CONSTRAINT PK_QRTZ_SCHEDULER_STATE PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + CONSTRAINT PK_QRTZ_LOCKS PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +COMMIT; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_h2.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_h2.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_h2.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,248 @@ +-- Thanks to Amir Kibbar and Peter Rietzler for contributing the schema for H2 database, +-- and verifying that it works with Quartz's StdJDBCDelegate +-- +-- Note, Quartz depends on row-level locking which means you must use the MVCC=TRUE +-- setting on your H2 database, or you will experience dead-locks +-- +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate + +CREATE TABLE QRTZ_CALENDARS ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR (200) NOT NULL , + CALENDAR IMAGE NOT NULL +); + +CREATE TABLE QRTZ_CRON_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR (200) NOT NULL , + TRIGGER_GROUP VARCHAR (200) NOT NULL , + CRON_EXPRESSION VARCHAR (120) NOT NULL , + TIME_ZONE_ID VARCHAR (80) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR (95) NOT NULL , + TRIGGER_NAME VARCHAR (200) NOT NULL , + TRIGGER_GROUP VARCHAR (200) NOT NULL , + INSTANCE_NAME VARCHAR (200) NOT NULL , + FIRED_TIME BIGINT NOT NULL , + SCHED_TIME BIGINT NOT NULL , + PRIORITY INTEGER NOT NULL , + STATE VARCHAR (16) NOT NULL, + JOB_NAME VARCHAR (200) NULL , + JOB_GROUP VARCHAR (200) NULL , + IS_NONCONCURRENT BOOLEAN NULL , + REQUESTS_RECOVERY BOOLEAN NULL +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR (200) NOT NULL +); + +CREATE TABLE QRTZ_SCHEDULER_STATE ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR (200) NOT NULL , + LAST_CHECKIN_TIME BIGINT NOT NULL , + CHECKIN_INTERVAL BIGINT NOT NULL +); + +CREATE TABLE QRTZ_LOCKS ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR (40) NOT NULL +); + +CREATE TABLE QRTZ_JOB_DETAILS ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR (200) NOT NULL , + JOB_GROUP VARCHAR (200) NOT NULL , + DESCRIPTION VARCHAR (250) NULL , + JOB_CLASS_NAME VARCHAR (250) NOT NULL , + IS_DURABLE BOOLEAN NOT NULL , + IS_NONCONCURRENT BOOLEAN NOT NULL , + IS_UPDATE_DATA BOOLEAN NOT NULL , + REQUESTS_RECOVERY BOOLEAN NOT NULL , + JOB_DATA IMAGE NULL +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR (200) NOT NULL , + TRIGGER_GROUP VARCHAR (200) NOT NULL , + REPEAT_COUNT BIGINT NOT NULL , + REPEAT_INTERVAL BIGINT NOT NULL , + TIMES_TRIGGERED BIGINT NOT NULL +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INTEGER NULL, + INT_PROP_2 INTEGER NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 BOOLEAN NULL, + BOOL_PROP_2 BOOLEAN NULL +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR (200) NOT NULL , + TRIGGER_GROUP VARCHAR (200) NOT NULL , + BLOB_DATA IMAGE NULL +); + +CREATE TABLE QRTZ_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR (200) NOT NULL , + TRIGGER_GROUP VARCHAR (200) NOT NULL , + JOB_NAME VARCHAR (200) NOT NULL , + JOB_GROUP VARCHAR (200) NOT NULL , + DESCRIPTION VARCHAR (250) NULL , + NEXT_FIRE_TIME BIGINT NULL , + PREV_FIRE_TIME BIGINT NULL , + PRIORITY INTEGER NULL , + TRIGGER_STATE VARCHAR (16) NOT NULL , + TRIGGER_TYPE VARCHAR (8) NOT NULL , + START_TIME BIGINT NOT NULL , + END_TIME BIGINT NULL , + CALENDAR_NAME VARCHAR (200) NULL , + MISFIRE_INSTR SMALLINT NULL , + JOB_DATA IMAGE NULL +); + +ALTER TABLE QRTZ_CALENDARS ADD + CONSTRAINT PK_QRTZ_CALENDARS PRIMARY KEY + ( + SCHED_NAME, + CALENDAR_NAME + ); + +ALTER TABLE QRTZ_CRON_TRIGGERS ADD + CONSTRAINT PK_QRTZ_CRON_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_FIRED_TRIGGERS ADD + CONSTRAINT PK_QRTZ_FIRED_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + ENTRY_ID + ); + +ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS ADD + CONSTRAINT PK_QRTZ_PAUSED_TRIGGER_GRPS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_SCHEDULER_STATE ADD + CONSTRAINT PK_QRTZ_SCHEDULER_STATE PRIMARY KEY + ( + SCHED_NAME, + INSTANCE_NAME + ); + +ALTER TABLE QRTZ_LOCKS ADD + CONSTRAINT PK_QRTZ_LOCKS PRIMARY KEY + ( + SCHED_NAME, + LOCK_NAME + ); + +ALTER TABLE QRTZ_JOB_DETAILS ADD + CONSTRAINT PK_QRTZ_JOB_DETAILS PRIMARY KEY + ( + SCHED_NAME, + JOB_NAME, + JOB_GROUP + ); + +ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD + CONSTRAINT PK_QRTZ_SIMPLE_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_SIMPROP_TRIGGERS ADD + CONSTRAINT PK_QRTZ_SIMPROP_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_TRIGGERS ADD + CONSTRAINT PK_QRTZ_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_CRON_TRIGGERS ADD + CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) REFERENCES QRTZ_TRIGGERS ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) ON DELETE CASCADE; + + +ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD + CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) REFERENCES QRTZ_TRIGGERS ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) ON DELETE CASCADE; + +ALTER TABLE QRTZ_SIMPROP_TRIGGERS ADD + CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) REFERENCES QRTZ_TRIGGERS ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) ON DELETE CASCADE; + + +ALTER TABLE QRTZ_TRIGGERS ADD + CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS FOREIGN KEY + ( + SCHED_NAME, + JOB_NAME, + JOB_GROUP + ) REFERENCES QRTZ_JOB_DETAILS ( + SCHED_NAME, + JOB_NAME, + JOB_GROUP + ); + +COMMIT; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_hsqldb.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_hsqldb.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_hsqldb.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,161 @@ +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.HSQLDBDelegate +-- + +DROP TABLE qrtz_locks IF EXISTS; +DROP TABLE qrtz_scheduler_state IF EXISTS; +DROP TABLE qrtz_fired_triggers IF EXISTS; +DROP TABLE qrtz_paused_trigger_grps IF EXISTS; +DROP TABLE qrtz_calendars IF EXISTS; +DROP TABLE qrtz_blob_triggers IF EXISTS; +DROP TABLE qrtz_cron_triggers IF EXISTS; +DROP TABLE qrtz_simple_triggers IF EXISTS; +DROP TABLE qrtz_simprop_triggers IF EXISTS; +DROP TABLE qrtz_triggers IF EXISTS; +DROP TABLE qrtz_job_details IF EXISTS; + +CREATE TABLE qrtz_job_details +( +SCHED_NAME VARCHAR(120) NOT NULL, +JOB_NAME VARCHAR(200) NOT NULL, +JOB_GROUP VARCHAR(200) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +JOB_CLASS_NAME VARCHAR(250) NOT NULL, +IS_DURABLE BOOLEAN NOT NULL, +IS_NONCONCURRENT BOOLEAN NOT NULL, +IS_UPDATE_DATA BOOLEAN NOT NULL, +REQUESTS_RECOVERY BOOLEAN NOT NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +JOB_NAME VARCHAR(200) NOT NULL, +JOB_GROUP VARCHAR(200) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +NEXT_FIRE_TIME NUMERIC(13) NULL, +PREV_FIRE_TIME NUMERIC(13) NULL, +PRIORITY INTEGER NULL, +TRIGGER_STATE VARCHAR(16) NOT NULL, +TRIGGER_TYPE VARCHAR(8) NOT NULL, +START_TIME NUMERIC(13) NOT NULL, +END_TIME NUMERIC(13) NULL, +CALENDAR_NAME VARCHAR(200) NULL, +MISFIRE_INSTR NUMERIC(2) NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_simple_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +REPEAT_COUNT NUMERIC(7) NOT NULL, +REPEAT_INTERVAL NUMERIC(12) NOT NULL, +TIMES_TRIGGERED NUMERIC(10) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_cron_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +CRON_EXPRESSION VARCHAR(120) NOT NULL, +TIME_ZONE_ID VARCHAR(80), +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_simprop_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 NUMERIC(9) NULL, + INT_PROP_2 NUMERIC(9) NULL, + LONG_PROP_1 NUMERIC(13) NULL, + LONG_PROP_2 NUMERIC(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 BOOLEAN NULL, + BOOL_PROP_2 BOOLEAN NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_blob_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +BLOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_calendars +( +SCHED_NAME VARCHAR(120) NOT NULL, +CALENDAR_NAME VARCHAR(200) NOT NULL, +CALENDAR BLOB NOT NULL, +PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE qrtz_paused_trigger_grps +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_fired_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +ENTRY_ID VARCHAR(95) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +INSTANCE_NAME VARCHAR(200) NOT NULL, +FIRED_TIME NUMERIC(13) NOT NULL, +SCHED_TIME NUMERIC(13) NOT NULL, +PRIORITY INTEGER NOT NULL, +STATE VARCHAR(16) NOT NULL, +JOB_NAME VARCHAR(200) NULL, +JOB_GROUP VARCHAR(200) NULL, +IS_NONCONCURRENT BOOLEAN NULL, +REQUESTS_RECOVERY BOOLEAN NULL, +PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE qrtz_scheduler_state +( +SCHED_NAME VARCHAR(120) NOT NULL, +INSTANCE_NAME VARCHAR(200) NOT NULL, +LAST_CHECKIN_TIME NUMERIC(13) NOT NULL, +CHECKIN_INTERVAL NUMERIC(13) NOT NULL, +PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE qrtz_locks +( +SCHED_NAME VARCHAR(120) NOT NULL, +LOCK_NAME VARCHAR(40) NOT NULL, +PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_hsqldb_old.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_hsqldb_old.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_hsqldb_old.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,156 @@ +# +# Thanks to Joseph Wilkicki for submitting this file's contents +# +# In your Quartz properties file, you'll need to set +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.HSQLDBDelegate +# +# Some users report the need to change the fields +# with datatype "OTHER" to datatype "BINARY" with +# particular versions (e.g. 1.7.1) of HSQLDB +# + +CREATE TABLE qrtz_job_details +( +SCHED_NAME VARCHAR(120) NOT NULL, +JOB_NAME LONGVARCHAR(80) NOT NULL, +JOB_GROUP LONGVARCHAR(80) NOT NULL, +DESCRIPTION LONGVARCHAR(120) NULL, +JOB_CLASS_NAME LONGVARCHAR(128) NOT NULL, +IS_DURABLE LONGVARCHAR(1) NOT NULL, +IS_NONCONCURRENT LONGVARCHAR(1) NOT NULL, +IS_UPDATE_DATA LONGVARCHAR(1) NOT NULL, +REQUESTS_RECOVERY LONGVARCHAR(1) NOT NULL, +JOB_DATA OTHER NULL, +PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME LONGVARCHAR(80) NOT NULL, +TRIGGER_GROUP LONGVARCHAR(80) NOT NULL, +JOB_NAME LONGVARCHAR(80) NOT NULL, +JOB_GROUP LONGVARCHAR(80) NOT NULL, +DESCRIPTION LONGVARCHAR(120) NULL, +NEXT_FIRE_TIME NUMERIC(13) NULL, +PREV_FIRE_TIME NUMERIC(13) NULL, +PRIORITY INTEGER NULL, +TRIGGER_STATE LONGVARCHAR(16) NOT NULL, +TRIGGER_TYPE LONGVARCHAR(8) NOT NULL, +START_TIME NUMERIC(13) NOT NULL, +END_TIME NUMERIC(13) NULL, +CALENDAR_NAME LONGVARCHAR(80) NULL, +MISFIRE_INSTR NUMERIC(2) NULL, +JOB_DATA OTHER NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_simple_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME LONGVARCHAR(80) NOT NULL, +TRIGGER_GROUP LONGVARCHAR(80) NOT NULL, +REPEAT_COUNT NUMERIC(7) NOT NULL, +REPEAT_INTERVAL NUMERIC(12) NOT NULL, +TIMES_TRIGGERED NUMERIC(10) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_cron_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME LONGVARCHAR(80) NOT NULL, +TRIGGER_GROUP LONGVARCHAR(80) NOT NULL, +CRON_EXPRESSION LONGVARCHAR(120) NOT NULL, +TIME_ZONE_ID LONGVARCHAR(80), +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_simprop_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME LONGVARCHAR(200) NOT NULL, + TRIGGER_GROUP LONGVARCHAR(200) NOT NULL, + STR_PROP_1 LONGVARCHAR(512) NULL, + STR_PROP_2 LONGVARCHAR(512) NULL, + STR_PROP_3 LONGVARCHAR(512) NULL, + INT_PROP_1 NUMERIC(9) NULL, + INT_PROP_2 NUMERIC(9) NULL, + LONG_PROP_1 NUMERIC(13) NULL, + LONG_PROP_2 NUMERIC(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 LONGVARCHAR(1) NULL, + BOOL_PROP_2 LONGVARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_blob_triggers +( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME LONGVARCHAR(80) NOT NULL, +TRIGGER_GROUP LONGVARCHAR(80) NOT NULL, +BLOB_DATA OTHER NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_calendars +( +SCHED_NAME VARCHAR(120) NOT NULL, +CALENDAR_NAME LONGVARCHAR(80) NOT NULL, +CALENDAR OTHER NOT NULL, +PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE qrtz_paused_trigger_grps + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP LONGVARCHAR(80) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_fired_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID LONGVARCHAR(95) NOT NULL, + TRIGGER_NAME LONGVARCHAR(80) NOT NULL, + TRIGGER_GROUP LONGVARCHAR(80) NOT NULL, + INSTANCE_NAME LONGVARCHAR(80) NOT NULL, + FIRED_TIME NUMERIC(13) NOT NULL, + SCHED_TIME NUMERIC(13) NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE LONGVARCHAR(16) NOT NULL, + JOB_NAME LONGVARCHAR(80) NULL, + JOB_GROUP LONGVARCHAR(80) NULL, + IS_NONCONCURRENT LONGVARCHAR(1) NULL, + REQUESTS_RECOVERY LONGVARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE qrtz_scheduler_state + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME LONGVARCHAR(80) NOT NULL, + LAST_CHECKIN_TIME NUMERIC(13) NOT NULL, + CHECKIN_INTERVAL NUMERIC(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE qrtz_locks + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME LONGVARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +commit; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_informix.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_informix.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_informix.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,186 @@ +{ } +{ Thanks to Keith Chew for submitting this. } +{ } +{ use the StdJDBCDelegate with Informix. } +{ } +{ note that Informix has a 18 cahracter limit on the table name, so the prefix had to be shortened to "q" instread of "qrtz_" } + +CREATE TABLE qblob_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME varchar(80) NOT NULL, +TRIGGER_GROUP varchar(80) NOT NULL, +BLOB_DATA byte in table +); + +ALTER TABLE qblob_triggers +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP); + + +CREATE TABLE qcalendars ( +SCHED_NAME VARCHAR(120) NOT NULL, +CALENDAR_NAME varchar(80) NOT NULL, +CALENDAR byte in table NOT NULL +); + +ALTER TABLE qcalendars +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,CALENDAR_NAME); + + +CREATE TABLE qcron_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME varchar(80) NOT NULL, +TRIGGER_GROUP varchar(80) NOT NULL, +CRON_EXPRESSION varchar(120) NOT NULL, +TIME_ZONE_ID varchar(80) +); + +ALTER TABLE qcron_triggers +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP); + + +CREATE TABLE qfired_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +ENTRY_ID varchar(95) NOT NULL, +TRIGGER_NAME varchar(80) NOT NULL, +TRIGGER_GROUP varchar(80) NOT NULL, +INSTANCE_NAME varchar(80) NOT NULL, +FIRED_TIME numeric(13) NOT NULL, +SCHED_TIME numeric(13) NOT NULL, +PRIORITY integer NOT NULL, +STATE varchar(16) NOT NULL, +JOB_NAME varchar(80), +JOB_GROUP varchar(80), +IS_NONCONCURRENT varchar(1), +REQUESTS_RECOVERY varchar(1) +); + +ALTER TABLE qfired_triggers +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,ENTRY_ID); + + +CREATE TABLE qpaused_trigger_grps ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_GROUP varchar(80) NOT NULL +); + +ALTER TABLE qpaused_trigger_grps +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP); + + +CREATE TABLE qscheduler_state ( +SCHED_NAME VARCHAR(120) NOT NULL, +INSTANCE_NAME varchar(80) NOT NULL, +LAST_CHECKIN_TIME numeric(13) NOT NULL, +CHECKIN_INTERVAL numeric(13) NOT NULL +); + +ALTER TABLE qscheduler_state +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,INSTANCE_NAME); + + +CREATE TABLE qlocks ( +SCHED_NAME VARCHAR(120) NOT NULL, +LOCK_NAME varchar(40) NOT NULL +); + +ALTER TABLE qlocks +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,LOCK_NAME); + + +CREATE TABLE qjob_details ( +SCHED_NAME VARCHAR(120) NOT NULL, +JOB_NAME varchar(80) NOT NULL, +JOB_GROUP varchar(80) NOT NULL, +DESCRIPTION varchar(120), +JOB_CLASS_NAME varchar(128) NOT NULL, +IS_DURABLE varchar(1) NOT NULL, +IS_NONCONCURRENT varchar(1) NOT NULL, +IS_UPDATE_DATA varchar(1) NOT NULL, +REQUESTS_RECOVERY varchar(1) NOT NULL, +JOB_DATA byte in table +); + +ALTER TABLE qjob_details +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,JOB_NAME, JOB_GROUP); + + +CREATE TABLE qsimple_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME varchar(80) NOT NULL, +TRIGGER_GROUP varchar(80) NOT NULL, +REPEAT_COUNT numeric(7) NOT NULL, +REPEAT_INTERVAL numeric(12) NOT NULL, +TIMES_TRIGGERED numeric(10) NOT NULL +); + +ALTER TABLE qsimple_triggers +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP); + + +CREATE TABLE qsimprop_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 NUMERIC(9) NULL, + INT_PROP_2 NUMERIC(9) NULL, + LONG_PROP_1 NUMERIC(13) NULL, + LONG_PROP_2 NUMERIC(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, +); + +ALTER TABLE qsimprop_triggers +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP); + + +CREATE TABLE qtriggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME varchar(80) NOT NULL, +TRIGGER_GROUP varchar(80) NOT NULL, +JOB_NAME varchar(80) NOT NULL, +JOB_GROUP varchar(80) NOT NULL, +DESCRIPTION varchar(120), +NEXT_FIRE_TIME numeric(13), +PREV_FIRE_TIME numeric(13), +PRIORITY integer, +TRIGGER_STATE varchar(16) NOT NULL, +TRIGGER_TYPE varchar(8) NOT NULL, +START_TIME numeric(13) NOT NULL, +END_TIME numeric(13), +CALENDAR_NAME varchar(80), +MISFIRE_INSTR numeric(2), +JOB_DATA byte in table +); + +ALTER TABLE qtriggers +ADD CONSTRAINT PRIMARY KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP); + + +ALTER TABLE qblob_triggers +ADD CONSTRAINT FOREIGN KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +REFERENCES qtriggers; + + +ALTER TABLE qcron_triggers +ADD CONSTRAINT FOREIGN KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +REFERENCES qtriggers; + + +ALTER TABLE qsimple_triggers +ADD CONSTRAINT FOREIGN KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +REFERENCES qtriggers; + +ALTER TABLE qsimprop_triggers +ADD CONSTRAINT FOREIGN KEY (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +REFERENCES qtriggers; + +ALTER TABLE qtriggers +ADD CONSTRAINT FOREIGN KEY (SCHED_NAME,JOB_NAME, JOB_GROUP) +REFERENCES qjob_details; + Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_mysql.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_mysql.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_mysql.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,168 @@ +# +# Quartz seems to work best with the driver mm.mysql-2.0.7-bin.jar +# +# PLEASE consider using mysql with innodb tables to avoid locking issues +# +# In your Quartz properties file, you'll need to set +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +# + +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + + +CREATE TABLE QRTZ_JOB_DETAILS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE VARCHAR(1) NOT NULL, + IS_NONCONCURRENT VARCHAR(1) NOT NULL, + IS_UPDATE_DATA VARCHAR(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR(1) NOT NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT(13) NULL, + PREV_FIRE_TIME BIGINT(13) NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT(13) NOT NULL, + END_TIME BIGINT(13) NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT(2) NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT(7) NOT NULL, + REPEAT_INTERVAL BIGINT(12) NOT NULL, + TIMES_TRIGGERED BIGINT(10) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(200) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BLOB NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT(13) NOT NULL, + SCHED_TIME BIGINT(13) NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT VARCHAR(1) NULL, + REQUESTS_RECOVERY VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT(13) NOT NULL, + CHECKIN_INTERVAL BIGINT(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + + +commit; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,179 @@ +# +# In your Quartz properties file, you'll need to set +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +# +# +# By: Ron Cordell - roncordell +# I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM. + +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + +CREATE TABLE QRTZ_JOB_DETAILS( +SCHED_NAME VARCHAR(120) NOT NULL, +JOB_NAME VARCHAR(190) NOT NULL, +JOB_GROUP VARCHAR(190) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +JOB_CLASS_NAME VARCHAR(250) NOT NULL, +IS_DURABLE VARCHAR(1) NOT NULL, +IS_NONCONCURRENT VARCHAR(1) NOT NULL, +IS_UPDATE_DATA VARCHAR(1) NOT NULL, +REQUESTS_RECOVERY VARCHAR(1) NOT NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(190) NOT NULL, +TRIGGER_GROUP VARCHAR(190) NOT NULL, +JOB_NAME VARCHAR(190) NOT NULL, +JOB_GROUP VARCHAR(190) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +NEXT_FIRE_TIME BIGINT(13) NULL, +PREV_FIRE_TIME BIGINT(13) NULL, +PRIORITY INTEGER NULL, +TRIGGER_STATE VARCHAR(16) NOT NULL, +TRIGGER_TYPE VARCHAR(8) NOT NULL, +START_TIME BIGINT(13) NOT NULL, +END_TIME BIGINT(13) NULL, +CALENDAR_NAME VARCHAR(190) NULL, +MISFIRE_INSTR SMALLINT(2) NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(190) NOT NULL, +TRIGGER_GROUP VARCHAR(190) NOT NULL, +REPEAT_COUNT BIGINT(7) NOT NULL, +REPEAT_INTERVAL BIGINT(12) NOT NULL, +TIMES_TRIGGERED BIGINT(10) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_CRON_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(190) NOT NULL, +TRIGGER_GROUP VARCHAR(190) NOT NULL, +CRON_EXPRESSION VARCHAR(120) NOT NULL, +TIME_ZONE_ID VARCHAR(80), +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(190) NOT NULL, + TRIGGER_GROUP VARCHAR(190) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_BLOB_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(190) NOT NULL, +TRIGGER_GROUP VARCHAR(190) NOT NULL, +BLOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_CALENDARS ( +SCHED_NAME VARCHAR(120) NOT NULL, +CALENDAR_NAME VARCHAR(190) NOT NULL, +CALENDAR BLOB NOT NULL, +PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_GROUP VARCHAR(190) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_FIRED_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +ENTRY_ID VARCHAR(95) NOT NULL, +TRIGGER_NAME VARCHAR(190) NOT NULL, +TRIGGER_GROUP VARCHAR(190) NOT NULL, +INSTANCE_NAME VARCHAR(190) NOT NULL, +FIRED_TIME BIGINT(13) NOT NULL, +SCHED_TIME BIGINT(13) NOT NULL, +PRIORITY INTEGER NOT NULL, +STATE VARCHAR(16) NOT NULL, +JOB_NAME VARCHAR(190) NULL, +JOB_GROUP VARCHAR(190) NULL, +IS_NONCONCURRENT VARCHAR(1) NULL, +REQUESTS_RECOVERY VARCHAR(1) NULL, +PRIMARY KEY (SCHED_NAME,ENTRY_ID)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_SCHEDULER_STATE ( +SCHED_NAME VARCHAR(120) NOT NULL, +INSTANCE_NAME VARCHAR(190) NOT NULL, +LAST_CHECKIN_TIME BIGINT(13) NOT NULL, +CHECKIN_INTERVAL BIGINT(13) NOT NULL, +PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_LOCKS ( +SCHED_NAME VARCHAR(120) NOT NULL, +LOCK_NAME VARCHAR(40) NOT NULL, +PRIMARY KEY (SCHED_NAME,LOCK_NAME)) +ENGINE=InnoDB; + +CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP); + +CREATE INDEX IDX_QRTZ_T_J ON QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME); +CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME); +CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); + +commit; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_oracle.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_oracle.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_oracle.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,193 @@ +-- +-- A hint submitted by a user: Oracle DB MUST be created as "shared" and the +-- job_queue_processes parameter must be greater than 2 +-- However, these settings are pretty much standard after any +-- Oracle install, so most users need not worry about this. +-- +-- Many other users (including the primary author of Quartz) have had success +-- runing in dedicated mode, so only consider the above as a hint ;-) +-- + +delete from qrtz_fired_triggers; +delete from qrtz_simple_triggers; +delete from qrtz_simprop_triggers; +delete from qrtz_cron_triggers; +delete from qrtz_blob_triggers; +delete from qrtz_triggers; +delete from qrtz_job_details; +delete from qrtz_calendars; +delete from qrtz_paused_trigger_grps; +delete from qrtz_locks; +delete from qrtz_scheduler_state; + +drop table qrtz_calendars; +drop table qrtz_fired_triggers; +drop table qrtz_blob_triggers; +drop table qrtz_cron_triggers; +drop table qrtz_simple_triggers; +drop table qrtz_simprop_triggers; +drop table qrtz_triggers; +drop table qrtz_job_details; +drop table qrtz_paused_trigger_grps; +drop table qrtz_locks; +drop table qrtz_scheduler_state; + + +CREATE TABLE qrtz_job_details + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + JOB_CLASS_NAME VARCHAR2(250) NOT NULL, + IS_DURABLE VARCHAR2(1) NOT NULL, + IS_NONCONCURRENT VARCHAR2(1) NOT NULL, + IS_UPDATE_DATA VARCHAR2(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR2(1) NOT NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); +CREATE TABLE qrtz_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + NEXT_FIRE_TIME NUMBER(13) NULL, + PREV_FIRE_TIME NUMBER(13) NULL, + PRIORITY NUMBER(13) NULL, + TRIGGER_STATE VARCHAR2(16) NOT NULL, + TRIGGER_TYPE VARCHAR2(8) NOT NULL, + START_TIME NUMBER(13) NOT NULL, + END_TIME NUMBER(13) NULL, + CALENDAR_NAME VARCHAR2(200) NULL, + MISFIRE_INSTR NUMBER(2) NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); +CREATE TABLE qrtz_simple_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + REPEAT_COUNT NUMBER(7) NOT NULL, + REPEAT_INTERVAL NUMBER(12) NOT NULL, + TIMES_TRIGGERED NUMBER(10) NOT NULL, + CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_cron_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CRON_EXPRESSION VARCHAR2(120) NOT NULL, + TIME_ZONE_ID VARCHAR2(80), + CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_simprop_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + STR_PROP_1 VARCHAR2(512) NULL, + STR_PROP_2 VARCHAR2(512) NULL, + STR_PROP_3 VARCHAR2(512) NULL, + INT_PROP_1 NUMBER(10) NULL, + INT_PROP_2 NUMBER(10) NULL, + LONG_PROP_1 NUMBER(13) NULL, + LONG_PROP_2 NUMBER(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR2(1) NULL, + BOOL_PROP_2 VARCHAR2(1) NULL, + CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_blob_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + BLOB_DATA BLOB NULL, + CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_calendars + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + CALENDAR_NAME VARCHAR2(200) NOT NULL, + CALENDAR BLOB NOT NULL, + CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); +CREATE TABLE qrtz_paused_trigger_grps + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_fired_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + ENTRY_ID VARCHAR2(95) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + FIRED_TIME NUMBER(13) NOT NULL, + SCHED_TIME NUMBER(13) NOT NULL, + PRIORITY NUMBER(13) NOT NULL, + STATE VARCHAR2(16) NOT NULL, + JOB_NAME VARCHAR2(200) NULL, + JOB_GROUP VARCHAR2(200) NULL, + IS_NONCONCURRENT VARCHAR2(1) NULL, + REQUESTS_RECOVERY VARCHAR2(1) NULL, + CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); +CREATE TABLE qrtz_scheduler_state + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + LAST_CHECKIN_TIME NUMBER(13) NOT NULL, + CHECKIN_INTERVAL NUMBER(13) NOT NULL, + CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); +CREATE TABLE qrtz_locks + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + LOCK_NAME VARCHAR2(40) NOT NULL, + CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP); + +create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME); +create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP); +create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE); +create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME); +create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP); + + Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_pointbase.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_pointbase.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_pointbase.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,180 @@ +# +# Thanks to Gregg Freeman +# +# +# ...you may want to change defined the size of the "blob" columns before +# creating the tables (particularly for the qrtz_job_details.job_data column), +# if you will be storing large amounts of data in them +# +# +delete from qrtz_fired_triggers; +delete from qrtz_simple_triggers; +delete from qrtz_simprop_triggers; +delete from qrtz_cron_triggers; +delete from qrtz_blob_triggers; +delete from qrtz_triggers; +delete from qrtz_job_details; +delete from qrtz_calendars; +delete from qrtz_paused_trigger_grps; +delete from qrtz_locks; +delete from qrtz_scheduler_state; + +drop table qrtz_calendars; +drop table qrtz_fired_triggers; +drop table qrtz_blob_triggers; +drop table qrtz_cron_triggers; +drop table qrtz_simple_triggers; +drop table qrtz_simprop_triggers; +drop table qrtz_triggers; +drop table qrtz_job_details; +drop table qrtz_paused_trigger_grps; +drop table qrtz_locks; +drop table qrtz_scheduler_state; + + +CREATE TABLE qrtz_job_details + ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR2(80) NOT NULL, + JOB_GROUP VARCHAR2(80) NOT NULL, + DESCRIPTION VARCHAR2(120) NULL, + JOB_CLASS_NAME VARCHAR2(128) NOT NULL, + IS_DURABLE BOOLEAN NOT NULL, + IS_NONCONCURRENT BOOLEAN NOT NULL, + IS_UPDATE_DATA BOOLEAN NOT NULL, + REQUESTS_RECOVERY BOOLEAN NOT NULL, + JOB_DATA BLOB(4K) NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR2(80) NOT NULL, + TRIGGER_GROUP VARCHAR2(80) NOT NULL, + JOB_NAME VARCHAR2(80) NOT NULL, + JOB_GROUP VARCHAR2(80) NOT NULL, + DESCRIPTION VARCHAR2(120) NULL, + NEXT_FIRE_TIME NUMBER(13) NULL, + PREV_FIRE_TIME NUMBER(13) NULL, + PRIORITY NUMBER(13) NULL, + TRIGGER_STATE VARCHAR2(16) NOT NULL, + TRIGGER_TYPE VARCHAR2(8) NOT NULL, + START_TIME NUMBER(13) NOT NULL, + END_TIME NUMBER(13) NULL, + CALENDAR_NAME VARCHAR2(80) NULL, + MISFIRE_INSTR NUMBER(2) NULL, + JOB_DATA BLOB(4K) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_simple_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR2(80) NOT NULL, + TRIGGER_GROUP VARCHAR2(80) NOT NULL, + REPEAT_COUNT NUMBER(7) NOT NULL, + REPEAT_INTERVAL NUMBER(12) NOT NULL, + TIMES_TRIGGERED NUMBER(10) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + + +CREATE TABLE qrtz_simprop_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 NUMBER(10) NULL, + INT_PROP_2 NUMBER(10) NULL, + LONG_PROP_1 NUMBER(13) NULL, + LONG_PROP_2 NUMBER(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 BOOLEAN NULL, + BOOL_PROP_2 BOOLEAN NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_cron_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR2(80) NOT NULL, + TRIGGER_GROUP VARCHAR2(80) NOT NULL, + CRON_EXPRESSION VARCHAR2(120) NOT NULL, + TIME_ZONE_ID VARCHAR2(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_blob_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR2(80) NOT NULL, + TRIGGER_GROUP VARCHAR2(80) NOT NULL, + BLOB_DATA BLOB(4K) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_calendars + ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR2(80) NOT NULL, + CALENDAR BLOB(4K) NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE qrtz_paused_trigger_grps + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR2(80) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_fired_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR2(95) NOT NULL, + TRIGGER_NAME VARCHAR2(80) NOT NULL, + TRIGGER_GROUP VARCHAR2(80) NOT NULL, + INSTANCE_NAME VARCHAR2(80) NOT NULL, + FIRED_TIME NUMBER(13) NOT NULL, + SCHED_TIME NUMBER(13) NOT NULL, + PRIORITY NUMBER(13) NOT NULL, + STATE VARCHAR2(16) NOT NULL, + JOB_NAME VARCHAR2(80) NULL, + JOB_GROUP VARCHAR2(80) NULL, + IS_NONCONCURRENT BOOLEAN NULL, + REQUESTS_RECOVERY BOOLEAN NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE qrtz_scheduler_state + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR2(80) NOT NULL, + LAST_CHECKIN_TIME NUMBER(13) NOT NULL, + CHECKIN_INTERVAL NUMBER(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE qrtz_locks + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR2(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +commit; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_postgres.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_postgres.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_postgres.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,207 @@ +-- Thanks to Patrick Lightbody for submitting this... +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate + +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + +CREATE TABLE QRTZ_JOB_DETAILS +( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE BOOL NOT NULL, + IS_NONCONCURRENT BOOL NOT NULL, + IS_UPDATE_DATA BOOL NOT NULL, + REQUESTS_RECOVERY BOOL NOT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT NULL, + PREV_FIRE_TIME BIGINT NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT NOT NULL, + END_TIME BIGINT NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS (SCHED_NAME, JOB_NAME, JOB_GROUP) +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT NOT NULL, + REPEAT_INTERVAL BIGINT NOT NULL, + TIMES_TRIGGERED BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(120) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13, 4) NULL, + DEC_PROP_2 NUMERIC(13, 4) NULL, + BOOL_PROP_1 BOOL NULL, + BOOL_PROP_2 BOOL NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS +( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BYTEA NOT NULL, + PRIMARY KEY (SCHED_NAME, CALENDAR_NAME) +); + + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT NOT NULL, + SCHED_TIME BIGINT NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT BOOL NULL, + REQUESTS_RECOVERY BOOL NULL, + PRIMARY KEY (SCHED_NAME, ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE +( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT NOT NULL, + CHECKIN_INTERVAL BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME, INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS +( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME, LOCK_NAME) +); + +CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY + ON QRTZ_JOB_DETAILS (SCHED_NAME, REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_J_GRP + ON QRTZ_JOB_DETAILS (SCHED_NAME, JOB_GROUP); + +CREATE INDEX IDX_QRTZ_T_J + ON QRTZ_TRIGGERS (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_JG + ON QRTZ_TRIGGERS (SCHED_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_C + ON QRTZ_TRIGGERS (SCHED_NAME, CALENDAR_NAME); +CREATE INDEX IDX_QRTZ_T_G + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_T_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_G_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME + ON QRTZ_TRIGGERS (SCHED_NAME, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_STATE, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_GROUP, TRIGGER_STATE); + +CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, INSTANCE_NAME); +CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, INSTANCE_NAME, REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_FT_J_G + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_JG + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_T_G + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_FT_TG + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_GROUP); + + +COMMIT; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sapdb.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sapdb.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sapdb.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,151 @@ +# +# Thanks to Andrew Perepelytsya for submitting this file. +# +# In your Quartz properties file, you'll need to set +# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +# + +CREATE TABLE QRTZ_JOB_DETAILS +( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(128) NOT NULL, + IS_DURABLE VARCHAR(1) NOT NULL, + IS_NONCONCURRENT VARCHAR(1) NOT NULL, + IS_UPDATE_DATA VARCHAR(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR(1) NOT NULL, + JOB_DATA LONG BYTE NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME FIXED(13) NULL, + PREV_FIRE_TIME FIXED(13) NULL, + PRIORITY FIXED(13) NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME FIXED(13) NOT NULL, + END_TIME FIXED(13) NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR FIXED(2) NULL, + JOB_DATA LONG BYTE NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT FIXED(7) NOT NULL, + REPEAT_INTERVAL FIXED(12) NOT NULL, + TIMES_TRIGGERED FIXED(10) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 FIXED(10) NULL, + INT_PROP_2 FIXED(10) NULL, + LONG_PROP_1 FIXED(13) NULL, + LONG_PROP_2 FIXED(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(120) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA LONG BYTE NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS +( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + CALENDAR LONG BYTE NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME FIXED(13) NOT NULL, + SCHED_TIME FIXED(13) NOT NULL, + PRIORITY FIXED(13) NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT VARCHAR(1) NULL, + REQUESTS_RECOVERY VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME FIXED(13) NOT NULL, + CHECKIN_INTERVAL FIXED(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + + +commit; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_solid.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_solid.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_solid.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,147 @@ + +DROP TABLE qrtz_locks; +DROP TABLE qrtz_scheduler_state; +DROP TABLE qrtz_fired_triggers; +DROP TABLE qrtz_paused_trigger_grps; +DROP TABLE qrtz_calendars; +DROP TABLE qrtz_blob_triggers; +DROP TABLE qrtz_cron_triggers; +DROP TABLE qrtz_simple_triggers; +DROP TABLE qrtz_simprop_triggers; +DROP TABLE qrtz_triggers; +DROP TABLE qrtz_job_details; + +create table qrtz_job_details ( + sched_name varchar(120) not null, + job_name varchar(80) not null, + job_group varchar(80) not null, + description varchar(120) , + job_class_name varchar(128) not null, + is_durable varchar(5) not null, + is_nonconcurrent varchar(5) not null, + is_update_data varchar(5) not null, + requests_recovery varchar(5) not null, + job_data long varbinary, +primary key (sched_name,job_name,job_group) +); + +create table qrtz_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + job_name varchar(80) not null, + job_group varchar(80) not null, + description varchar(120) , + next_fire_time numeric(13), + prev_fire_time numeric(13), + priority integer, + trigger_state varchar(16) not null, + trigger_type varchar(8) not null, + start_time numeric(13) not null, + end_time numeric(13), + calendar_name varchar(80), + misfire_instr smallint, + job_data long varbinary, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group) +); + +create table qrtz_simple_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + repeat_count numeric(13) not null, + repeat_interval numeric(13) not null, + times_triggered numeric(13) not null, +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +CREATE TABLE qrtz_simprop_triggers + ( + sched_name varchar(120) not null, + trigger_name VARCHAR(200) NOT NULL, + trigger_group VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INTEGER NULL, + INT_PROP_2 INTEGER NULL, + LONG_PROP_1 NUMERIC(13) NULL, + LONG_PROP_2 NUMERIC(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(5) NULL, + BOOL_PROP_2 VARCHAR(5) NULL, +PRIMARY KEY (sched_name,trigger_name,trigger_group), +FOREIGN KEY (sched_name,trigger_name,trigger_group) REFERENCES qrtz_triggers(sched_name,trigger_name,trigger_group) +); + + +create table qrtz_cron_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + cron_expression varchar(120) not null, + time_zone_id varchar(80), +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_blob_triggers( + sched_name varchar(120) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + blob_data long varbinary , +primary key (sched_name,trigger_name,trigger_group), +foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group) +); + +create table qrtz_calendars( + sched_name varchar(120) not null, + calendar_name varchar(80) not null, + calendar long varbinary not null, +primary key (sched_name,calendar_name) +); + +create table qrtz_paused_trigger_grps + ( + sched_name varchar(120) not null, + trigger_group varchar(80) not null, +primary key (sched_name,trigger_group) +); + +create table qrtz_fired_triggers( + sched_name varchar(120) not null, + entry_id varchar(95) not null, + trigger_name varchar(80) not null, + trigger_group varchar(80) not null, + instance_name varchar(80) not null, + fired_time numeric(13) not null, + sched_time numeric(13) not null, + priority integer not null, + state varchar(16) not null, + job_name varchar(80) null, + job_group varchar(80) null, + is_nonconcurrent varchar(5) null, + requests_recovery varchar(5) null, +primary key (sched_name,entry_id) +); + +create table qrtz_scheduler_state + ( + sched_name varchar(120) not null, + instance_name varchar(80) not null, + last_checkin_time numeric(13) not null, + checkin_interval numeric(13) not null, +primary key (sched_name,instance_name) +); + +create table qrtz_locks + ( + sched_name varchar(120) not null, + lock_name varchar(40) not null, +primary key (sched_name,lock_name) +); + +commit work; Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sqlServer.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sqlServer.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sqlServer.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,366 @@ +--# thanks to George Papastamatopoulos for submitting this ... and Marko Lahma for +--# updating it. +--# +--# In your Quartz properties file, you'll need to set +--# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate +--# +--# you shouse enter your DB instance's name on the next line in place of "enter_db_name_here" +--# +--# +--# From a helpful (but anonymous) Quartz user: +--# +--# Regarding this error message: +--# +--# [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode. +--# +--# +--# I added "SelectMethod=cursor;" to my Connection URL in the config file. +--# It Seems to work, hopefully no side effects. +--# +--# example: +--# "jdbc:microsoft:sqlserver://dbmachine:1433;SelectMethod=cursor"; +--# +--# Another user has pointed out that you will probably need to use the +--# JTDS driver +--# + +USE [enter_db_name_here] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_TRIGGERS] DROP CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] DROP CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] DROP CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] DROP CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_BLOB_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_BLOB_TRIGGERS] DROP CONSTRAINT FK_QRTZ_BLOB_TRIGGERS_QRTZ_TRIGGERS +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_CALENDARS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_CALENDARS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_CRON_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_CRON_TRIGGERS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_BLOB_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_BLOB_TRIGGERS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_FIRED_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_FIRED_TRIGGERS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_PAUSED_TRIGGER_GRPS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SCHEDULER_STATE]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_SCHEDULER_STATE] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_LOCKS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_LOCKS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_JOB_DETAILS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SIMPLE_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SIMPROP_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_TRIGGERS] +GO + +CREATE TABLE [dbo].[QRTZ_CALENDARS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [CALENDAR_NAME] [VARCHAR] (200) NOT NULL , + [CALENDAR] [IMAGE] NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_CRON_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [CRON_EXPRESSION] [VARCHAR] (120) NOT NULL , + [TIME_ZONE_ID] [VARCHAR] (80) +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_FIRED_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [ENTRY_ID] [VARCHAR] (95) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [INSTANCE_NAME] [VARCHAR] (200) NOT NULL , + [FIRED_TIME] [BIGINT] NOT NULL , + [SCHED_TIME] [BIGINT] NOT NULL , + [PRIORITY] [INTEGER] NOT NULL , + [STATE] [VARCHAR] (16) NOT NULL, + [JOB_NAME] [VARCHAR] (200) NULL , + [JOB_GROUP] [VARCHAR] (200) NULL , + [IS_NONCONCURRENT] [VARCHAR] (1) NULL , + [REQUESTS_RECOVERY] [VARCHAR] (1) NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_SCHEDULER_STATE] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [INSTANCE_NAME] [VARCHAR] (200) NOT NULL , + [LAST_CHECKIN_TIME] [BIGINT] NOT NULL , + [CHECKIN_INTERVAL] [BIGINT] NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_LOCKS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [LOCK_NAME] [VARCHAR] (40) NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_JOB_DETAILS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [JOB_NAME] [VARCHAR] (200) NOT NULL , + [JOB_GROUP] [VARCHAR] (200) NOT NULL , + [DESCRIPTION] [VARCHAR] (250) NULL , + [JOB_CLASS_NAME] [VARCHAR] (250) NOT NULL , + [IS_DURABLE] [VARCHAR] (1) NOT NULL , + [IS_NONCONCURRENT] [VARCHAR] (1) NOT NULL , + [IS_UPDATE_DATA] [VARCHAR] (1) NOT NULL , + [REQUESTS_RECOVERY] [VARCHAR] (1) NOT NULL , + [JOB_DATA] [IMAGE] NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [REPEAT_COUNT] [BIGINT] NOT NULL , + [REPEAT_INTERVAL] [BIGINT] NOT NULL , + [TIMES_TRIGGERED] [BIGINT] NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [STR_PROP_1] [VARCHAR] (512) NULL, + [STR_PROP_2] [VARCHAR] (512) NULL, + [STR_PROP_3] [VARCHAR] (512) NULL, + [INT_PROP_1] [INT] NULL, + [INT_PROP_2] [INT] NULL, + [LONG_PROP_1] [BIGINT] NULL, + [LONG_PROP_2] [BIGINT] NULL, + [DEC_PROP_1] [NUMERIC] (13,4) NULL, + [DEC_PROP_2] [NUMERIC] (13,4) NULL, + [BOOL_PROP_1] [VARCHAR] (1) NULL, + [BOOL_PROP_2] [VARCHAR] (1) NULL, +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_BLOB_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [BLOB_DATA] [IMAGE] NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [JOB_NAME] [VARCHAR] (200) NOT NULL , + [JOB_GROUP] [VARCHAR] (200) NOT NULL , + [DESCRIPTION] [VARCHAR] (250) NULL , + [NEXT_FIRE_TIME] [BIGINT] NULL , + [PREV_FIRE_TIME] [BIGINT] NULL , + [PRIORITY] [INTEGER] NULL , + [TRIGGER_STATE] [VARCHAR] (16) NOT NULL , + [TRIGGER_TYPE] [VARCHAR] (8) NOT NULL , + [START_TIME] [BIGINT] NOT NULL , + [END_TIME] [BIGINT] NULL , + [CALENDAR_NAME] [VARCHAR] (200) NULL , + [MISFIRE_INSTR] [SMALLINT] NULL , + [JOB_DATA] [IMAGE] NULL +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_CALENDARS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_CALENDARS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [CALENDAR_NAME] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_CRON_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_FIRED_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_FIRED_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [ENTRY_ID] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_PAUSED_TRIGGER_GRPS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_SCHEDULER_STATE] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_SCHEDULER_STATE] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [INSTANCE_NAME] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_LOCKS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_LOCKS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [LOCK_NAME] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_JOB_DETAILS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_JOB_DETAILS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [JOB_NAME], + [JOB_GROUP] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_SIMPLE_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_SIMPROP_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) REFERENCES [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON DELETE CASCADE +GO + +ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) REFERENCES [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON DELETE CASCADE +GO + +ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) REFERENCES [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON DELETE CASCADE +GO + +ALTER TABLE [dbo].[QRTZ_BLOB_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_BLOB_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) REFERENCES [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON DELETE CASCADE +GO + +ALTER TABLE [dbo].[QRTZ_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS] FOREIGN KEY + ( + [SCHED_NAME], + [JOB_NAME], + [JOB_GROUP] + ) REFERENCES [dbo].[QRTZ_JOB_DETAILS] ( + [SCHED_NAME], + [JOB_NAME], + [JOB_GROUP] + ) +GO + Index: 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sybase.sql =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sybase.sql (revision 0) +++ 3rdParty_sources/quartz/org/quartz/impl/jdbcjobstore/tables_sybase.sql (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,313 @@ +/*==============================================================================================*/ +/* Quartz database tables creation script for Sybase ASE 12.5 */ +/* Written by Pertti Laiho (email: pertti.laiho@deio.net), 9th May 2003 */ +/* */ +/* Compatible with Quartz version 1.1.2 */ +/* */ +/* Sybase ASE works ok with the SybaseDelegate delegate class. That means in your Quartz properties */ +/* file, you'll need to set: */ +/* org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.SybaseDelegate */ +/*==============================================================================================*/ + +use your_db_name_here +go + +/*==============================================================================*/ +/* Clear all tables: */ +/*==============================================================================*/ + +IF OBJECT_ID('QRTZ_FIRED_TRIGGERS') IS NOT NULL +delete from QRTZ_FIRED_TRIGGERS +go +IF OBJECT_ID('QRTZ_PAUSED_TRIGGER_GRPS') IS NOT NULL +delete from QRTZ_PAUSED_TRIGGER_GRPS +go +IF OBJECT_ID('QRTZ_SCHEDULER_STATE') IS NOT NULL +delete from QRTZ_SCHEDULER_STATE +go +IF OBJECT_ID('QRTZ_LOCKS') IS NOT NULL +delete from QRTZ_LOCKS +go +IF OBJECT_ID('QRTZ_SIMPLE_TRIGGERS') IS NOT NULL +delete from QRTZ_SIMPLE_TRIGGERS +go +IF OBJECT_ID('QRTZ_SIMPROP_TRIGGERS') IS NOT NULL +delete from QRTZ_SIMPROP_TRIGGERS +go +IF OBJECT_ID('QRTZ_CRON_TRIGGERS') IS NOT NULL +delete from QRTZ_CRON_TRIGGERS +go +IF OBJECT_ID('QRTZ_BLOB_TRIGGERS') IS NOT NULL +delete from QRTZ_BLOB_TRIGGERS +go +IF OBJECT_ID('QRTZ_TRIGGERS') IS NOT NULL +delete from QRTZ_TRIGGERS +go +IF OBJECT_ID('QRTZ_JOB_DETAILS') IS NOT NULL +delete from QRTZ_JOB_DETAILS +go +IF OBJECT_ID('QRTZ_CALENDARS') IS NOT NULL +delete from QRTZ_CALENDARS +go + +/*==============================================================================*/ +/* Drop constraints: */ +/*==============================================================================*/ + +alter table QRTZ_TRIGGERS +drop constraint FK_triggers_job_details +go + +alter table QRTZ_CRON_TRIGGERS +drop constraint FK_cron_triggers_triggers +go + +alter table QRTZ_SIMPLE_TRIGGERS +drop constraint FK_simple_triggers_triggers +go + +alter table QRTZ_SIMPROP_TRIGGERS +drop constraint FK_simprop_triggers_triggers +go + +alter table QRTZ_BLOB_TRIGGERS +drop constraint FK_blob_triggers_triggers +go + +/*==============================================================================*/ +/* Drop tables: */ +/*==============================================================================*/ + +drop table QRTZ_FIRED_TRIGGERS +go +drop table QRTZ_PAUSED_TRIGGER_GRPS +go +drop table QRTZ_SCHEDULER_STATE +go +drop table QRTZ_LOCKS +go +drop table QRTZ_SIMPLE_TRIGGERS +go +drop table QRTZ_SIMPROP_TRIGGERS +go +drop table QRTZ_CRON_TRIGGERS +go +drop table QRTZ_BLOB_TRIGGERS +go +drop table QRTZ_TRIGGERS +go +drop table QRTZ_JOB_DETAILS +go +drop table QRTZ_CALENDARS +go + +/*==============================================================================*/ +/* Create tables: */ +/*==============================================================================*/ + +create table QRTZ_CALENDARS ( +SCHED_NAME varchar(120) not null, +CALENDAR_NAME varchar(200) not null, +CALENDAR image not null +) +go + +create table QRTZ_CRON_TRIGGERS ( +SCHED_NAME varchar(120) not null, +TRIGGER_NAME varchar(200) not null, +TRIGGER_GROUP varchar(200) not null, +CRON_EXPRESSION varchar(120) not null, +TIME_ZONE_ID varchar(80) null, +) +go + +create table QRTZ_PAUSED_TRIGGER_GRPS ( +SCHED_NAME varchar(120) not null, +TRIGGER_GROUP varchar(200) not null, +) +go + +create table QRTZ_FIRED_TRIGGERS( +SCHED_NAME varchar(120) not null, +ENTRY_ID varchar(95) not null, +TRIGGER_NAME varchar(200) not null, +TRIGGER_GROUP varchar(200) not null, +INSTANCE_NAME varchar(200) not null, +FIRED_TIME numeric(13,0) not null, +SCHED_TIME numeric(13,0) not null, +PRIORITY int not null, +STATE varchar(16) not null, +JOB_NAME varchar(200) null, +JOB_GROUP varchar(200) null, +IS_NONCONCURRENT bit not null, +REQUESTS_RECOVERY bit not null, +) +go + +create table QRTZ_SCHEDULER_STATE ( +SCHED_NAME varchar(120) not null, +INSTANCE_NAME varchar(200) not null, +LAST_CHECKIN_TIME numeric(13,0) not null, +CHECKIN_INTERVAL numeric(13,0) not null, +) +go + +create table QRTZ_LOCKS ( +SCHED_NAME varchar(120) not null, +LOCK_NAME varchar(40) not null, +) +go + + +create table QRTZ_JOB_DETAILS ( +SCHED_NAME varchar(120) not null, +JOB_NAME varchar(200) not null, +JOB_GROUP varchar(200) not null, +DESCRIPTION varchar(250) null, +JOB_CLASS_NAME varchar(250) not null, +IS_DURABLE bit not null, +IS_NONCONCURRENT bit not null, +IS_UPDATE_DATA bit not null, +REQUESTS_RECOVERY bit not null, +JOB_DATA image null +) +go + +create table QRTZ_SIMPLE_TRIGGERS ( +SCHED_NAME varchar(120) not null, +TRIGGER_NAME varchar(200) not null, +TRIGGER_GROUP varchar(200) not null, +REPEAT_COUNT numeric(13,0) not null, +REPEAT_INTERVAL numeric(13,0) not null, +TIMES_TRIGGERED numeric(13,0) not null +) +go + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 NUMERIC(13,0) NULL, + LONG_PROP_2 NUMERIC(13,0) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 bit NOT NULL, + BOOL_PROP_2 bit NOT NULL +) +go + +create table QRTZ_BLOB_TRIGGERS ( +SCHED_NAME varchar(120) not null, +TRIGGER_NAME varchar(200) not null, +TRIGGER_GROUP varchar(200) not null, +BLOB_DATA image null +) +go + +create table QRTZ_TRIGGERS ( +SCHED_NAME varchar(120) not null, +TRIGGER_NAME varchar(200) not null, +TRIGGER_GROUP varchar(200) not null, +JOB_NAME varchar(200) not null, +JOB_GROUP varchar(200) not null, +DESCRIPTION varchar(250) null, +NEXT_FIRE_TIME numeric(13,0) null, +PREV_FIRE_TIME numeric(13,0) null, +PRIORITY int null, +TRIGGER_STATE varchar(16) not null, +TRIGGER_TYPE varchar(8) not null, +START_TIME numeric(13,0) not null, +END_TIME numeric(13,0) null, +CALENDAR_NAME varchar(200) null, +MISFIRE_INSTR smallint null, +JOB_DATA image null +) +go + +/*==============================================================================*/ +/* Create primary key constraints: */ +/*==============================================================================*/ + +alter table QRTZ_CALENDARS +add constraint PK_qrtz_calendars primary key clustered (SCHED_NAME,CALENDAR_NAME) +go + +alter table QRTZ_CRON_TRIGGERS +add constraint PK_qrtz_cron_triggers primary key clustered (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +go + +alter table QRTZ_FIRED_TRIGGERS +add constraint PK_qrtz_fired_triggers primary key clustered (SCHED_NAME,ENTRY_ID) +go + +alter table QRTZ_PAUSED_TRIGGER_GRPS +add constraint PK_qrtz_paused_trigger_grps primary key clustered (SCHED_NAME,TRIGGER_GROUP) +go + +alter table QRTZ_SCHEDULER_STATE +add constraint PK_qrtz_scheduler_state primary key clustered (SCHED_NAME,INSTANCE_NAME) +go + +alter table QRTZ_LOCKS +add constraint PK_qrtz_locks primary key clustered (SCHED_NAME,LOCK_NAME) +go + +alter table QRTZ_JOB_DETAILS +add constraint PK_qrtz_job_details primary key clustered (SCHED_NAME,JOB_NAME, JOB_GROUP) +go + +alter table QRTZ_SIMPLE_TRIGGERS +add constraint PK_qrtz_simple_triggers primary key clustered (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +go + +alter table QRTZ_SIMPROP_TRIGGERS +add constraint PK_qrtz_simprop_triggers primary key clustered (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +go + +alter table QRTZ_TRIGGERS +add constraint PK_qrtz_triggers primary key clustered (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +go + +alter table QRTZ_BLOB_TRIGGERS +add constraint PK_qrtz_blob_triggers primary key clustered (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP) +go + + +/*==============================================================================*/ +/* Create foreign key constraints: */ +/*==============================================================================*/ + +alter table QRTZ_CRON_TRIGGERS +add constraint FK_cron_triggers_triggers foreign key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +references QRTZ_TRIGGERS (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +go + +alter table QRTZ_SIMPLE_TRIGGERS +add constraint FK_simple_triggers_triggers foreign key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +references QRTZ_TRIGGERS (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +go + +alter table QRTZ_SIMPROP_TRIGGERS +add constraint FK_simprop_triggers_triggers foreign key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +references QRTZ_TRIGGERS (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +go + +alter table QRTZ_TRIGGERS +add constraint FK_triggers_job_details foreign key (SCHED_NAME,JOB_NAME,JOB_GROUP) +references QRTZ_JOB_DETAILS (SCHED_NAME,JOB_NAME,JOB_GROUP) +go + +alter table QRTZ_BLOB_TRIGGERS +add constraint FK_blob_triggers_triggers foreign key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +references QRTZ_TRIGGERS (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +go + +/*==============================================================================*/ +/* End of script. */ +/*==============================================================================*/ Index: 3rdParty_sources/quartz/org/quartz/impl/triggers/AbstractTrigger.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/triggers/AbstractTrigger.java (.../AbstractTrigger.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/triggers/AbstractTrigger.java (.../AbstractTrigger.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/triggers/CalendarIntervalTriggerImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/triggers/CalendarIntervalTriggerImpl.java (.../CalendarIntervalTriggerImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/triggers/CalendarIntervalTriggerImpl.java (.../CalendarIntervalTriggerImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/impl/triggers/CronTriggerImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/triggers/CronTriggerImpl.java (.../CronTriggerImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/triggers/CronTriggerImpl.java (.../CronTriggerImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -31,6 +31,8 @@ import org.quartz.Scheduler; import org.quartz.Trigger; import org.quartz.TriggerUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @@ -62,6 +64,8 @@ */ private static final long serialVersionUID = -8644953146451592766L; + private static final Logger LOGGER = LoggerFactory.getLogger(CronTriggerImpl.class); + protected static final int YEAR_TO_GIVEUP_SCHEDULING_AT = CronExpression.MAX_YEAR; @@ -813,12 +817,22 @@ CronScheduleBuilder cb = CronScheduleBuilder.cronSchedule(getCronExpression()) .inTimeZone(getTimeZone()); - - switch(getMisfireInstruction()) { - case MISFIRE_INSTRUCTION_DO_NOTHING : cb.withMisfireHandlingInstructionDoNothing(); - break; - case MISFIRE_INSTRUCTION_FIRE_ONCE_NOW : cb.withMisfireHandlingInstructionFireAndProceed(); - break; + + int misfireInstruction = getMisfireInstruction(); + switch(misfireInstruction) { + case MISFIRE_INSTRUCTION_SMART_POLICY: + break; + case MISFIRE_INSTRUCTION_DO_NOTHING: + cb.withMisfireHandlingInstructionDoNothing(); + break; + case MISFIRE_INSTRUCTION_FIRE_ONCE_NOW: + cb.withMisfireHandlingInstructionFireAndProceed(); + break; + case MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY: + cb.withMisfireHandlingInstructionIgnoreMisfires(); + break; + default: + LOGGER.warn("Unrecognized misfire policy {}. Derived builder will use the default cron trigger behavior (MISFIRE_INSTRUCTION_FIRE_ONCE_NOW)", misfireInstruction); } return cb; Index: 3rdParty_sources/quartz/org/quartz/impl/triggers/DailyTimeIntervalTriggerImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/triggers/DailyTimeIntervalTriggerImpl.java (.../DailyTimeIntervalTriggerImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/triggers/DailyTimeIntervalTriggerImpl.java (.../DailyTimeIntervalTriggerImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -854,8 +854,13 @@ } // Ensure timeOfDay is in order. - if (getEndTimeOfDay() != null && !getStartTimeOfDay().before(getEndTimeOfDay())) { - throw new SchedulerException("StartTimeOfDay " + startTimeOfDay + " should not come after endTimeOfDay " + endTimeOfDay); + // NOTE: We allow startTimeOfDay to be set equal to endTimeOfDay so the repeatCount can be + // set to 1. + if (getEndTimeOfDay() != null + && !getStartTimeOfDay().equals(getEndTimeOfDay()) + && !getStartTimeOfDay().before(getEndTimeOfDay())) { + throw new SchedulerException("StartTimeOfDay " + startTimeOfDay + + " should not come after endTimeOfDay " + endTimeOfDay); } } Index: 3rdParty_sources/quartz/org/quartz/impl/triggers/SimpleTriggerImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/impl/triggers/SimpleTriggerImpl.java (.../SimpleTriggerImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/impl/triggers/SimpleTriggerImpl.java (.../SimpleTriggerImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/listeners/BroadcastJobListener.java =================================================================== diff -u -ra5b247dd91cb3ffabf9de46cba029e5537fad087 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/listeners/BroadcastJobListener.java (.../BroadcastJobListener.java) (revision a5b247dd91cb3ffabf9de46cba029e5537fad087) +++ 3rdParty_sources/quartz/org/quartz/listeners/BroadcastJobListener.java (.../BroadcastJobListener.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/listeners/BroadcastTriggerListener.java =================================================================== diff -u -ra5b247dd91cb3ffabf9de46cba029e5537fad087 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/listeners/BroadcastTriggerListener.java (.../BroadcastTriggerListener.java) (revision a5b247dd91cb3ffabf9de46cba029e5537fad087) +++ 3rdParty_sources/quartz/org/quartz/listeners/BroadcastTriggerListener.java (.../BroadcastTriggerListener.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/listeners/JobChainingJobListener.java =================================================================== diff -u -ra5b247dd91cb3ffabf9de46cba029e5537fad087 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/listeners/JobChainingJobListener.java (.../JobChainingJobListener.java) (revision a5b247dd91cb3ffabf9de46cba029e5537fad087) +++ 3rdParty_sources/quartz/org/quartz/listeners/JobChainingJobListener.java (.../JobChainingJobListener.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/listeners/JobListenerSupport.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/listeners/JobListenerSupport.java (.../JobListenerSupport.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/listeners/JobListenerSupport.java (.../JobListenerSupport.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/listeners/SchedulerListenerSupport.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/listeners/SchedulerListenerSupport.java (.../SchedulerListenerSupport.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/listeners/SchedulerListenerSupport.java (.../SchedulerListenerSupport.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/listeners/TriggerListenerSupport.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/listeners/TriggerListenerSupport.java (.../TriggerListenerSupport.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/listeners/TriggerListenerSupport.java (.../TriggerListenerSupport.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/plugins/SchedulerPluginWithUserTransactionSupport.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/plugins/SchedulerPluginWithUserTransactionSupport.java (.../SchedulerPluginWithUserTransactionSupport.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/plugins/SchedulerPluginWithUserTransactionSupport.java (.../SchedulerPluginWithUserTransactionSupport.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/plugins/history/LoggingJobHistoryPlugin.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/plugins/history/LoggingJobHistoryPlugin.java (.../LoggingJobHistoryPlugin.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/plugins/history/LoggingJobHistoryPlugin.java (.../LoggingJobHistoryPlugin.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/plugins/history/LoggingTriggerHistoryPlugin.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/plugins/history/LoggingTriggerHistoryPlugin.java (.../LoggingTriggerHistoryPlugin.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/plugins/history/LoggingTriggerHistoryPlugin.java (.../LoggingTriggerHistoryPlugin.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/plugins/interrupt/JobInterruptMonitorPlugin.java =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/plugins/interrupt/JobInterruptMonitorPlugin.java (revision 0) +++ 3rdParty_sources/quartz/org/quartz/plugins/interrupt/JobInterruptMonitorPlugin.java (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,176 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ +package org.quartz.plugins.interrupt; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.quartz.JobExecutionContext; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.Trigger; +import org.quartz.Trigger.CompletedExecutionInstruction; +import org.quartz.listeners.TriggerListenerSupport; +import org.quartz.spi.ClassLoadHelper; +import org.quartz.spi.SchedulerPlugin; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * This plugin catches the event of job running for a long time (more than the + * configured max time) and tells the scheduler to "try" interrupting it if + * enabled. + * + * @see org.quartz.Scheduler#interrupt() + * + * @author Rama Chavali + */ + +public class JobInterruptMonitorPlugin extends TriggerListenerSupport implements SchedulerPlugin { + + private static final String JOB_INTERRUPT_MONITOR_KEY = "JOB_INTERRUPT_MONITOR_KEY"; + + private long DEFAULT_MAX_RUNTIME = 300000; + + private String name; + + private ScheduledExecutorService executor; + + @SuppressWarnings("rawtypes") + private ScheduledFuture future; + + private Scheduler scheduler; + + private final Logger log = LoggerFactory.getLogger(getClass()); + + //Constants + + public static final String AUTO_INTERRUPTIBLE = "AutoInterruptable"; + + public static final String MAX_RUN_TIME = "MaxRunTime"; + + public JobInterruptMonitorPlugin() { + } + + @Override + public void start() { + } + + @Override + + public void shutdown() { + this.executor.shutdown(); + } + + protected Logger getLog() { + return log; + } + + @SuppressWarnings("rawtypes") + public ScheduledFuture scheduleJobInterruptMonitor(JobKey jobkey, long delay) { + return this.executor.schedule(new InterruptMonitor(jobkey, scheduler), delay, TimeUnit.MILLISECONDS); + } + + // Bean Property Methods + + public long getDefaultMaxRunTime() { + return this.DEFAULT_MAX_RUNTIME; + } + + public void setDefaultMaxRunTime(long defaultMaxRunTime) { + this.DEFAULT_MAX_RUNTIME = defaultMaxRunTime; + } + + // Trigger Listener Methods + public String getName() { + return name; + } + + public void triggerFired(Trigger trigger, JobExecutionContext context) { + // Call the scheduleJobInterruptMonitor and capture the ScheduledFuture in context + try { + // Schedule Monitor only if the job wants AutoInterruptable functionality + if (context.getJobDetail().getJobDataMap().getBoolean(AUTO_INTERRUPTIBLE)) { + JobInterruptMonitorPlugin monitorPlugin = (JobInterruptMonitorPlugin) context.getScheduler() + .getContext().get(JOB_INTERRUPT_MONITOR_KEY); + // Get the MaxRuntime from Job Data if NOT available use DEFAULT_MAX_RUNTIME from Plugin Configuration + long jobDataDelay = DEFAULT_MAX_RUNTIME; + + if (context.getJobDetail().getJobDataMap().get(MAX_RUN_TIME) != null){ + jobDataDelay = context.getJobDetail().getJobDataMap().getLong(MAX_RUN_TIME); + } + future = monitorPlugin.scheduleJobInterruptMonitor(context.getJobDetail().getKey(), jobDataDelay); + getLog().debug("Job's Interrupt Monitor has been scheduled to interrupt with the delay :" + + DEFAULT_MAX_RUNTIME); + } + } catch (SchedulerException e) { + getLog().info("Error scheduling interrupt monitor " + e.getMessage(), e); + } + } + + public void triggerComplete(Trigger trigger, JobExecutionContext context, + CompletedExecutionInstruction triggerInstructionCode) { + // cancel the Future if job is complete + if (future != null) { + future.cancel(true); + } + } + + @Override + public void initialize(String name, Scheduler scheduler, ClassLoadHelper helper) throws SchedulerException { + + getLog().info("Registering Job Interrupt Monitor Plugin"); + this.name = name; + this.executor = Executors.newScheduledThreadPool(1); + scheduler.getContext().put(JOB_INTERRUPT_MONITOR_KEY, this); + this.scheduler = scheduler; + // Set the trigger Listener as this class to the ListenerManager here + this.scheduler.getListenerManager().addTriggerListener(this); + + } + + static class InterruptMonitor implements Runnable { + + private final JobKey jobKey; + private final Scheduler scheduler; + + private final Logger log = LoggerFactory.getLogger(getClass()); + + InterruptMonitor(JobKey jobKey, Scheduler scheduler) { + this.jobKey = jobKey; + this.scheduler = scheduler; + } + + protected Logger getLog() { + return log; + } + + @Override + public void run() { + try { + + // Interrupt the job here - using Scheduler API that gets propagated to Job's interrupt + getLog().info("Interrupting Job as it ran more than the configured max time. Job Details [" + jobKey.getName() + ":" + jobKey.getGroup()+"]"); + scheduler.interrupt(jobKey); + } catch (SchedulerException x) { + getLog().info("Error interrupting Job: " + x.getMessage(), x); + } + } + } +} Index: 3rdParty_sources/quartz/org/quartz/plugins/management/ShutdownHookPlugin.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/plugins/management/ShutdownHookPlugin.java (.../ShutdownHookPlugin.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/plugins/management/ShutdownHookPlugin.java (.../ShutdownHookPlugin.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/plugins/xml/XMLSchedulingDataProcessorPlugin.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/plugins/xml/XMLSchedulingDataProcessorPlugin.java (.../XMLSchedulingDataProcessorPlugin.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/plugins/xml/XMLSchedulingDataProcessorPlugin.java (.../XMLSchedulingDataProcessorPlugin.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2010 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/CascadingClassLoadHelper.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/CascadingClassLoadHelper.java (.../CascadingClassLoadHelper.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/CascadingClassLoadHelper.java (.../CascadingClassLoadHelper.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/HostnameInstanceIdGenerator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/HostnameInstanceIdGenerator.java (.../HostnameInstanceIdGenerator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/HostnameInstanceIdGenerator.java (.../HostnameInstanceIdGenerator.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/InitThreadContextClassLoadHelper.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/InitThreadContextClassLoadHelper.java (.../InitThreadContextClassLoadHelper.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/InitThreadContextClassLoadHelper.java (.../InitThreadContextClassLoadHelper.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/LoadingLoaderClassLoadHelper.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/LoadingLoaderClassLoadHelper.java (.../LoadingLoaderClassLoadHelper.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/LoadingLoaderClassLoadHelper.java (.../LoadingLoaderClassLoadHelper.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/PropertySettingJobFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/PropertySettingJobFactory.java (.../PropertySettingJobFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/PropertySettingJobFactory.java (.../PropertySettingJobFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/RAMJobStore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/RAMJobStore.java (.../RAMJobStore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/RAMJobStore.java (.../RAMJobStore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -98,7 +98,7 @@ protected HashMap calendarsByName = new HashMap(25); - protected ArrayList triggers = new ArrayList(1000); + protected Map> triggersByJob = new HashMap>(1000); protected final Object lock = new Object(); @@ -424,8 +424,14 @@ + ") referenced by the trigger does not exist."); } - // add to triggers array - triggers.add(tw); + // add to triggers by job + List jobList = triggersByJob.get(tw.jobKey); + if(jobList == null) { + jobList = new ArrayList(1); + triggersByJob.put(tw.jobKey, jobList); + } + jobList.add(tw); + // add to triggers by group HashMap grpMap = triggersByGroup.get(newTrigger.getKey().getGroup()); if (grpMap == null) { @@ -469,9 +475,9 @@ synchronized (lock) { // remove from triggers by FQN map - found = (triggersByKey.remove(key) != null); + TriggerWrapper tw = triggersByKey.remove(key); + found = tw != null; if (found) { - TriggerWrapper tw = null; // remove from triggers by group HashMap grpMap = triggersByGroup.get(key.getGroup()); if (grpMap != null) { @@ -480,15 +486,15 @@ triggersByGroup.remove(key.getGroup()); } } - // remove from triggers array - Iterator tgs = triggers.iterator(); - while (tgs.hasNext()) { - tw = tgs.next(); - if (key.equals(tw.key)) { - tgs.remove(); - break; + //remove from triggers by job + List jobList = triggersByJob.get(tw.jobKey); + if(jobList != null) { + jobList.remove(tw); + if(jobList.isEmpty()) { + triggersByJob.remove(tw.jobKey); } } + timeTriggers.remove(tw); if (removeOrphanedJob) { @@ -525,7 +531,6 @@ throw new JobPersistenceException("New trigger is not related to the same job as the old trigger."); } - tw = null; // remove from triggers by group HashMap grpMap = triggersByGroup.get(triggerKey.getGroup()); if (grpMap != null) { @@ -534,15 +539,16 @@ triggersByGroup.remove(triggerKey.getGroup()); } } - // remove from triggers array - Iterator tgs = triggers.iterator(); - while (tgs.hasNext()) { - tw = tgs.next(); - if (triggerKey.equals(tw.key)) { - tgs.remove(); - break; + + //remove from triggers by job + List jobList = triggersByJob.get(tw.jobKey); + if(jobList != null) { + jobList.remove(tw); + if(jobList.isEmpty()) { + triggersByJob.remove(tw.jobKey); } } + timeTriggers.remove(tw); try { @@ -664,6 +670,42 @@ } /** + * Reset the current state of the identified {@link Trigger} + * from {@link TriggerState#ERROR} to {@link TriggerState#NORMAL} or + * {@link TriggerState#PAUSED} as appropriate. + * + *

Only affects triggers that are in ERROR state - if identified trigger is not + * in that state then the result is a no-op.

+ * + *

The result will be the trigger returning to the normal, waiting to + * be fired state, unless the trigger's group has been paused, in which + * case it will go into the PAUSED state.

+ */ + public void resetTriggerFromErrorState(final TriggerKey triggerKey) throws JobPersistenceException { + + synchronized (lock) { + + TriggerWrapper tw = triggersByKey.get(triggerKey); + // does the trigger exist? + if (tw == null || tw.trigger == null) { + return; + } + // is the trigger in error state? + if (tw.state != TriggerWrapper.STATE_ERROR) { + return; + } + + if(pausedTriggerGroups.contains(triggerKey.getGroup())) { + tw.state = TriggerWrapper.STATE_PAUSED; + } + else { + tw.state = TriggerWrapper.STATE_WAITING; + timeTriggers.add(tw); + } + } + } + + /** *

* Store the given {@link org.quartz.Calendar}. *

@@ -737,7 +779,7 @@ int numRefs = 0; synchronized (lock) { - for (TriggerWrapper trigger : triggers) { + for (TriggerWrapper trigger : triggersByKey.values()) { OperableTrigger trigg = trigger.trigger; if (trigg.getCalendarName() != null && trigg.getCalendarName().equals(calName)) { @@ -793,7 +835,7 @@ */ public int getNumberOfTriggers() { synchronized (lock) { - return triggers.size(); + return triggersByKey.size(); } } @@ -965,8 +1007,9 @@ ArrayList trigList = new ArrayList(); synchronized (lock) { - for (TriggerWrapper tw : triggers) { - if (tw.jobKey.equals(jobKey)) { + List jobList = triggersByJob.get(jobKey); + if(jobList != null) { + for(TriggerWrapper tw : jobList) { trigList.add((OperableTrigger) tw.trigger.clone()); } } @@ -979,8 +1022,9 @@ ArrayList trigList = new ArrayList(); synchronized (lock) { - for (TriggerWrapper trigger : triggers) { - if (trigger.jobKey.equals(jobKey)) { + List jobList = triggersByJob.get(jobKey); + if(jobList != null) { + for(TriggerWrapper trigger : jobList) { trigList.add(trigger); } } @@ -993,7 +1037,7 @@ ArrayList trigList = new ArrayList(); synchronized (lock) { - for (TriggerWrapper tw : triggers) { + for (TriggerWrapper tw : triggersByKey.values()) { String tcalName = tw.getTrigger().getCalendarName(); if (tcalName != null && tcalName.equals(calName)) { trigList.add(tw); @@ -1217,9 +1261,27 @@ } resumeTrigger(triggerKey); } - for (String group : groups) { - pausedTriggerGroups.remove(group); + + // Find all matching paused trigger groups, and then remove them. + StringMatcher.StringOperatorName operator = matcher.getCompareWithOperator(); + LinkedList pausedGroups = new LinkedList(); + String matcherGroup = matcher.getCompareToValue(); + switch (operator) { + case EQUALS: + if(pausedTriggerGroups.contains(matcherGroup)) { + pausedGroups.add(matcher.getCompareToValue()); + } + break; + default : + for (String group : pausedTriggerGroups) { + if(operator.evaluate(group, matcherGroup)) { + pausedGroups.add(group); + } + } } + for (String pausedGroup : pausedGroups) { + pausedTriggerGroups.remove(pausedGroup); + } } return new ArrayList(groups); @@ -1624,6 +1686,11 @@ } } + @Override + public long getAcquireRetryDelay(int failureCount) { + return 20; + } + protected void setAllTriggersOfJobToState(JobKey jobKey, int state) { ArrayList tws = getTriggerWrappersForJob(jobKey); for (TriggerWrapper tw : tws) { Index: 3rdParty_sources/quartz/org/quartz/simpl/SimpleClassLoadHelper.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/SimpleClassLoadHelper.java (.../SimpleClassLoadHelper.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/SimpleClassLoadHelper.java (.../SimpleClassLoadHelper.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/SimpleInstanceIdGenerator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/SimpleInstanceIdGenerator.java (.../SimpleInstanceIdGenerator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/SimpleInstanceIdGenerator.java (.../SimpleInstanceIdGenerator.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/SimpleJobFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/SimpleJobFactory.java (.../SimpleJobFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/SimpleJobFactory.java (.../SimpleJobFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/SimpleThreadPool.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/SimpleThreadPool.java (.../SimpleThreadPool.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/SimpleThreadPool.java (.../SimpleThreadPool.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/SimpleTimeBroker.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/SimpleTimeBroker.java (.../SimpleTimeBroker.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/SimpleTimeBroker.java (.../SimpleTimeBroker.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/ThreadContextClassLoadHelper.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/ThreadContextClassLoadHelper.java (.../ThreadContextClassLoadHelper.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/ThreadContextClassLoadHelper.java (.../ThreadContextClassLoadHelper.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/simpl/ZeroSizeThreadPool.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/simpl/ZeroSizeThreadPool.java (.../ZeroSizeThreadPool.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/simpl/ZeroSizeThreadPool.java (.../ZeroSizeThreadPool.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/ClassLoadHelper.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/ClassLoadHelper.java (.../ClassLoadHelper.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/ClassLoadHelper.java (.../ClassLoadHelper.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/InstanceIdGenerator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/InstanceIdGenerator.java (.../InstanceIdGenerator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/InstanceIdGenerator.java (.../InstanceIdGenerator.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/JobFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/JobFactory.java (.../JobFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/JobFactory.java (.../JobFactory.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/JobStore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/JobStore.java (.../JobStore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/JobStore.java (.../JobStore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -425,6 +425,21 @@ */ TriggerState getTriggerState(TriggerKey triggerKey) throws JobPersistenceException; + /** + * Reset the current state of the identified {@link Trigger} + * from {@link TriggerState#ERROR} to {@link TriggerState#NORMAL} or + * {@link TriggerState#PAUSED} as appropriate. + * + *

Only affects triggers that are in ERROR state - if identified trigger is not + * in that state then the result is a no-op.

+ * + *

The result will be the trigger returning to the normal, waiting to + * be fired state, unless the trigger's group has been paused, in which + * case it will go into the PAUSED state.

+ */ + void resetTriggerFromErrorState(TriggerKey triggerKey) throws JobPersistenceException; + + ///////////////////////////////////////////////////////////////////////////// // // Trigger State manipulation methods @@ -449,7 +464,7 @@ * paused. *

* - * @see #resumeTriggerGroup(String) + * @see #resumeTriggers(GroupMatcher) */ Collection pauseTriggers(GroupMatcher matcher) throws JobPersistenceException; @@ -471,7 +486,7 @@ * paused. *

* - * @see #resumeJobGroup(String) + * @see #resumeJobs(GroupMatcher) */ Collection pauseJobs(GroupMatcher groupMatcher) throws JobPersistenceException; @@ -498,7 +513,7 @@ * Trigger's misfire instruction will be applied. *

* - * @see #pauseTriggers(String) + * @see #pauseTriggers(GroupMatcher) */ Collection resumeTriggers(GroupMatcher matcher) throws JobPersistenceException; @@ -530,7 +545,7 @@ * misfire instruction will be applied. *

* - * @see #pauseJobGroup(String) + * @see #pauseJobs(GroupMatcher) */ Collection resumeJobs(GroupMatcher matcher) throws JobPersistenceException; @@ -545,7 +560,7 @@ *

* * @see #resumeAll() - * @see #pauseTriggers(String) + * @see #pauseTriggers(GroupMatcher) */ void pauseAll() throws JobPersistenceException; @@ -576,7 +591,7 @@ * @param noLaterThan If > 0, the JobStore should only return a Trigger * that will fire no later than the time represented in this value as * milliseconds. - * @see #releaseAcquiredTrigger(Trigger) + * @see #releaseAcquiredTrigger(OperableTrigger) */ List acquireNextTriggers(long noLaterThan, int maxCount, long timeWindow) throws JobPersistenceException; @@ -632,4 +647,22 @@ * @since 2.0 */ void setThreadPoolSize(int poolSize); + + /** + * Get the amount of time (in ms) to wait when accessing this job store + * repeatedly fails. + * + * Called by the executor thread(s) when calls to + * {@link #acquireNextTriggers} fail more than once in succession, and the + * thread thus wants to wait a bit before trying again, to not consume + * 100% CPU, write huge amounts of errors into logs, etc. in cases like + * the DB being offline/restarting. + * + * The delay returned by implementations should be between 20 and + * 600000 milliseconds. + * + * @param failureCount the number of successive failures seen so far + * @return the time (in milliseconds) to wait before trying again + */ + long getAcquireRetryDelay(int failureCount); } Index: 3rdParty_sources/quartz/org/quartz/spi/SchedulerPlugin.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/SchedulerPlugin.java (.../SchedulerPlugin.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/SchedulerPlugin.java (.../SchedulerPlugin.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/SchedulerSignaler.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/SchedulerSignaler.java (.../SchedulerSignaler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/SchedulerSignaler.java (.../SchedulerSignaler.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/ThreadPool.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/ThreadPool.java (.../ThreadPool.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/ThreadPool.java (.../ThreadPool.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/TimeBroker.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/TimeBroker.java (.../TimeBroker.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/TimeBroker.java (.../TimeBroker.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/spi/TriggerFiredBundle.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/spi/TriggerFiredBundle.java (.../TriggerFiredBundle.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/spi/TriggerFiredBundle.java (.../TriggerFiredBundle.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/utils/C3p0PoolingConnectionProvider.java =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/utils/C3p0PoolingConnectionProvider.java (revision 0) +++ 3rdParty_sources/quartz/org/quartz/utils/C3p0PoolingConnectionProvider.java (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,233 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + */ + +package org.quartz.utils; + +import java.beans.PropertyVetoException; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import org.quartz.SchedulerException; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +/** + *

+ * A ConnectionProvider implementation that creates its own + * pool of connections. + *

+ * + *

+ * This class uses C3PO (http://www.mchange.com/projects/c3p0/index.html) as + * the underlying pool implementation.

+ * + * @see DBConnectionManager + * @see ConnectionProvider + * + * @author Sharada Jambula + * @author James House + * @author Mohammad Rezaei + */ +public class C3p0PoolingConnectionProvider implements PoolingConnectionProvider { + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Constants. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + /** + * The maximum number of prepared statements that will be cached per connection in the pool. + * Depending upon your JDBC Driver this may significantly help performance, or may slightly + * hinder performance. + * Default is 120, as Quartz uses over 100 unique statements. 0 disables the feature. + */ + public static final String DB_MAX_CACHED_STATEMENTS_PER_CONNECTION = "maxCachedStatementsPerConnection"; + + /** + * The number of seconds between tests of idle connections - only enabled + * if the validation query property is set. Default is 50 seconds. + */ + public static final String DB_IDLE_VALIDATION_SECONDS = "idleConnectionValidationSeconds"; + + /** + * Whether the database sql query to validate connections should be executed every time + * a connection is retrieved from the pool to ensure that it is still valid. If false, + * then validation will occur on check-in. Default is false. + */ + public static final String DB_VALIDATE_ON_CHECKOUT = "validateOnCheckout"; + + /** Discard connections after they have been idle this many seconds. 0 disables the feature. Default is 0.*/ + public static final String DB_DISCARD_IDLE_CONNECTIONS_SECONDS = "maxIdleTime"; + + /** Default maximum number of database connections in the pool. */ + public static final int DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION = 120; + + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Data members. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + private ComboPooledDataSource datasource; + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Constructors. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + public C3p0PoolingConnectionProvider(String dbDriver, String dbURL, + String dbUser, String dbPassword, int maxConnections, + String dbValidationQuery) throws SQLException, SchedulerException { + initialize( + dbDriver, dbURL, dbUser, dbPassword, + maxConnections, DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION, dbValidationQuery, false, 50, 0); + } + + /** + * Create a connection pool using the given properties. + * + *

+ * The properties passed should contain: + *

    + *
  • {@link #DB_DRIVER}- The database driver class name + *
  • {@link #DB_URL}- The database URL + *
  • {@link #DB_USER}- The database user + *
  • {@link #DB_PASSWORD}- The database password + *
  • {@link #DB_MAX_CONNECTIONS}- The maximum # connections in the pool, + * optional + *
  • {@link #DB_VALIDATION_QUERY}- The sql validation query, optional + *
+ *

+ * + * @param config + * configuration properties + */ + public C3p0PoolingConnectionProvider(Properties config) throws SchedulerException, SQLException { + PropertiesParser cfg = new PropertiesParser(config); + initialize( + cfg.getStringProperty(DB_DRIVER), + cfg.getStringProperty(DB_URL), + cfg.getStringProperty(DB_USER, ""), + cfg.getStringProperty(DB_PASSWORD, ""), + cfg.getIntProperty(DB_MAX_CONNECTIONS, DEFAULT_DB_MAX_CONNECTIONS), + cfg.getIntProperty(DB_MAX_CACHED_STATEMENTS_PER_CONNECTION, DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION), + cfg.getStringProperty(DB_VALIDATION_QUERY), + cfg.getBooleanProperty(DB_VALIDATE_ON_CHECKOUT, false), + cfg.getIntProperty(DB_IDLE_VALIDATION_SECONDS, 50), + cfg.getIntProperty(DB_DISCARD_IDLE_CONNECTIONS_SECONDS, 0)); + } + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Interface. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + /** + * Create the underlying C3PO ComboPooledDataSource with the + * default supported properties. + * @throws SchedulerException + */ + private void initialize( + String dbDriver, + String dbURL, + String dbUser, + String dbPassword, + int maxConnections, + int maxStatementsPerConnection, + String dbValidationQuery, + boolean validateOnCheckout, + int idleValidationSeconds, + int maxIdleSeconds) throws SQLException, SchedulerException { + if (dbURL == null) { + throw new SQLException( + "DBPool could not be created: DB URL cannot be null"); + } + + if (dbDriver == null) { + throw new SQLException( + "DBPool '" + dbURL + "' could not be created: " + + "DB driver class name cannot be null!"); + } + + if (maxConnections < 0) { + throw new SQLException( + "DBPool '" + dbURL + "' could not be created: " + + "Max connections must be greater than zero!"); + } + + + datasource = new ComboPooledDataSource(); + try { + datasource.setDriverClass(dbDriver); + } catch (PropertyVetoException e) { + throw new SchedulerException("Problem setting driver class name on datasource: " + e.getMessage(), e); + } + datasource.setJdbcUrl(dbURL); + datasource.setUser(dbUser); + datasource.setPassword(dbPassword); + datasource.setMaxPoolSize(maxConnections); + datasource.setMinPoolSize(1); + datasource.setMaxIdleTime(maxIdleSeconds); + datasource.setMaxStatementsPerConnection(maxStatementsPerConnection); + + if (dbValidationQuery != null) { + datasource.setPreferredTestQuery(dbValidationQuery); + if(!validateOnCheckout) + datasource.setTestConnectionOnCheckin(true); + else + datasource.setTestConnectionOnCheckout(true); + datasource.setIdleConnectionTestPeriod(idleValidationSeconds); + } + } + + /** + * Get the C3PO ComboPooledDataSource created during initialization. + * + *

+ * This can be used to set additional data source properties in a + * subclass's constructor. + *

+ */ + public ComboPooledDataSource getDataSource() { + return datasource; + } + + public Connection getConnection() throws SQLException { + return datasource.getConnection(); + } + + public void shutdown() throws SQLException { + datasource.close(); + } + + public void initialize() throws SQLException { + // do nothing, already initialized during constructor call + } +} Index: 3rdParty_sources/quartz/org/quartz/utils/CircularLossyQueue.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/CircularLossyQueue.java (.../CircularLossyQueue.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/CircularLossyQueue.java (.../CircularLossyQueue.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/ClassUtils.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/ClassUtils.java (.../ClassUtils.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/ClassUtils.java (.../ClassUtils.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,3 +1,18 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.quartz.utils; import java.lang.annotation.Annotation; Index: 3rdParty_sources/quartz/org/quartz/utils/ConnectionProvider.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/ConnectionProvider.java (.../ConnectionProvider.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/ConnectionProvider.java (.../ConnectionProvider.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/utils/DBConnectionManager.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/DBConnectionManager.java (.../DBConnectionManager.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/DBConnectionManager.java (.../DBConnectionManager.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/utils/DirtyFlagMap.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/DirtyFlagMap.java (.../DirtyFlagMap.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/DirtyFlagMap.java (.../DirtyFlagMap.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/utils/HikariCpPoolingConnectionProvider.java =================================================================== diff -u --- 3rdParty_sources/quartz/org/quartz/utils/HikariCpPoolingConnectionProvider.java (revision 0) +++ 3rdParty_sources/quartz/org/quartz/utils/HikariCpPoolingConnectionProvider.java (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -0,0 +1,190 @@ +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + */ + +package org.quartz.utils; + +import com.zaxxer.hikari.HikariDataSource; +import org.quartz.SchedulerException; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +/** + *

+ * A ConnectionProvider implementation that creates its own + * pool of connections. + *

+ * + *

+ * This class uses HikariCP (https://brettwooldridge.github.io/HikariCP/) as + * the underlying pool implementation.

+ * + * @see DBConnectionManager + * @see ConnectionProvider + * + * @author Ludovic Orban + */ +public class HikariCpPoolingConnectionProvider implements PoolingConnectionProvider { + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Constants. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + /** This pooling provider name. */ + public static final String POOLING_PROVIDER_NAME = "hikaricp"; + + /** Discard connections after they have been idle this many seconds. 0 disables the feature. Default is 0.*/ + private static final String DB_DISCARD_IDLE_CONNECTIONS_SECONDS = "discardIdleConnectionsSeconds"; + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Data members. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + private HikariDataSource datasource; + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Constructors. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + public HikariCpPoolingConnectionProvider(String dbDriver, String dbURL, + String dbUser, String dbPassword, int maxConnections, + String dbValidationQuery) throws SQLException, SchedulerException { + initialize( + dbDriver, dbURL, dbUser, dbPassword, + maxConnections, dbValidationQuery, 0); + } + + /** + * Create a connection pool using the given properties. + * + *

+ * The properties passed should contain: + *

    + *
  • {@link #DB_DRIVER}- The database driver class name + *
  • {@link #DB_URL}- The database URL + *
  • {@link #DB_USER}- The database user + *
  • {@link #DB_PASSWORD}- The database password + *
  • {@link #DB_MAX_CONNECTIONS}- The maximum # connections in the pool, + * optional + *
  • {@link #DB_VALIDATION_QUERY}- The sql validation query, optional + *
+ *

+ * + * @param config + * configuration properties + */ + public HikariCpPoolingConnectionProvider(Properties config) throws SchedulerException, SQLException { + PropertiesParser cfg = new PropertiesParser(config); + initialize( + cfg.getStringProperty(DB_DRIVER), + cfg.getStringProperty(DB_URL), + cfg.getStringProperty(DB_USER, ""), + cfg.getStringProperty(DB_PASSWORD, ""), + cfg.getIntProperty(DB_MAX_CONNECTIONS, DEFAULT_DB_MAX_CONNECTIONS), + cfg.getStringProperty(DB_VALIDATION_QUERY), + cfg.getIntProperty(DB_DISCARD_IDLE_CONNECTIONS_SECONDS, 0)); + } + + /* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Interface. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + /** + * Create the underlying C3PO ComboPooledDataSource with the + * default supported properties. + * @throws SchedulerException + */ + private void initialize( + String dbDriver, + String dbURL, + String dbUser, + String dbPassword, + int maxConnections, + String dbValidationQuery, + int maxIdleSeconds) throws SQLException, SchedulerException { + if (dbURL == null) { + throw new SQLException( + "DBPool could not be created: DB URL cannot be null"); + } + + if (dbDriver == null) { + throw new SQLException( + "DBPool '" + dbURL + "' could not be created: " + + "DB driver class name cannot be null!"); + } + + if (maxConnections < 0) { + throw new SQLException( + "DBPool '" + dbURL + "' could not be created: " + + "Max connections must be greater than zero!"); + } + + + datasource = new HikariDataSource(); + datasource.setDriverClassName(dbDriver); + datasource.setJdbcUrl(dbURL); + datasource.setUsername(dbUser); + datasource.setPassword(dbPassword); + datasource.setMaximumPoolSize(maxConnections); + datasource.setIdleTimeout(maxIdleSeconds); + + if (dbValidationQuery != null) { + datasource.setConnectionTestQuery(dbValidationQuery); + } + } + + /** + * Get the HikariCP HikariDataSource created during initialization. + * + *

+ * This can be used to set additional data source properties in a + * subclass's constructor. + *

+ */ + public HikariDataSource getDataSource() { + return datasource; + } + + public Connection getConnection() throws SQLException { + return datasource.getConnection(); + } + + public void shutdown() throws SQLException { + datasource.close(); + } + + public void initialize() throws SQLException { + // do nothing, already initialized during constructor call + } +} Index: 3rdParty_sources/quartz/org/quartz/utils/JNDIConnectionProvider.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/JNDIConnectionProvider.java (.../JNDIConnectionProvider.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/JNDIConnectionProvider.java (.../JNDIConnectionProvider.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/utils/Key.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/Key.java (.../Key.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/Key.java (.../Key.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/utils/PoolingConnectionProvider.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/PoolingConnectionProvider.java (.../PoolingConnectionProvider.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/PoolingConnectionProvider.java (.../PoolingConnectionProvider.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,257 +1,73 @@ -/* - * Copyright 2001-2009 Terracotta, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations +/* + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations * under the License. - * + * */ package org.quartz.utils; -import java.beans.PropertyVetoException; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Properties; +import javax.sql.DataSource; -import org.quartz.SchedulerException; - -import com.mchange.v2.c3p0.ComboPooledDataSource; - /** *

- * A ConnectionProvider implementation that creates its own - * pool of connections. + * ConnectionProviders supporting pooling of connections. *

- * + * *

- * This class uses C3PO (http://www.mchange.com/projects/c3p0/index.html) as - * the underlying pool implementation.

- * + * Implementations must pool connections. + *

+ * * @see DBConnectionManager * @see ConnectionProvider - * - * @author Sharada Jambula - * @author James House - * @author Mohammad Rezaei + * @author Ludovic Orban */ -public class PoolingConnectionProvider implements ConnectionProvider { +public interface PoolingConnectionProvider extends ConnectionProvider { - /* - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * Constants. - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ + /** The pooling provider. */ + String POOLING_PROVIDER = "provider"; + /** The c3p0 pooling provider. */ + String POOLING_PROVIDER_C3P0 = "c3p0"; + + /** The Hikari pooling provider. */ + String POOLING_PROVIDER_HIKARICP = "hikaricp"; + /** The JDBC database driver. */ - public static final String DB_DRIVER = "driver"; + String DB_DRIVER = "driver"; /** The JDBC database URL. */ - public static final String DB_URL = "URL"; + String DB_URL = "URL"; /** The database user name. */ - public static final String DB_USER = "user"; + String DB_USER = "user"; /** The database user password. */ - public static final String DB_PASSWORD = "password"; + String DB_PASSWORD = "password"; /** The maximum number of database connections to have in the pool. Default is 10. */ - public static final String DB_MAX_CONNECTIONS = "maxConnections"; + String DB_MAX_CONNECTIONS = "maxConnections"; - /** - * The maximum number of prepared statements that will be cached per connection in the pool. - * Depending upon your JDBC Driver this may significantly help performance, or may slightly - * hinder performance. - * Default is 120, as Quartz uses over 100 unique statements. 0 disables the feature. + /** + * The database sql query to execute every time a connection is returned + * to the pool to ensure that it is still valid. */ - public static final String DB_MAX_CACHED_STATEMENTS_PER_CONNECTION = "maxCachedStatementsPerConnection"; + String DB_VALIDATION_QUERY = "validationQuery"; - /** - * The database sql query to execute every time a connection is returned - * to the pool to ensure that it is still valid. - */ - public static final String DB_VALIDATION_QUERY = "validationQuery"; - - /** - * The number of seconds between tests of idle connections - only enabled - * if the validation query property is set. Default is 50 seconds. - */ - public static final String DB_IDLE_VALIDATION_SECONDS = "idleConnectionValidationSeconds"; - - /** - * Whether the database sql query to validate connections should be executed every time - * a connection is retrieved from the pool to ensure that it is still valid. If false, - * then validation will occur on check-in. Default is false. - */ - public static final String DB_VALIDATE_ON_CHECKOUT = "validateOnCheckout"; - - /** Discard connections after they have been idle this many seconds. 0 disables the feature. Default is 0.*/ - private static final String DB_DISCARD_IDLE_CONNECTIONS_SECONDS = "discardIdleConnectionsSeconds"; - /** Default maximum number of database connections in the pool. */ - public static final int DEFAULT_DB_MAX_CONNECTIONS = 10; + int DEFAULT_DB_MAX_CONNECTIONS = 10; - /** Default maximum number of database connections in the pool. */ - public static final int DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION = 120; + DataSource getDataSource(); - /* - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * Data members. - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - private ComboPooledDataSource datasource; - - /* - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * Constructors. - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - public PoolingConnectionProvider(String dbDriver, String dbURL, - String dbUser, String dbPassword, int maxConnections, - String dbValidationQuery) throws SQLException, SchedulerException { - initialize( - dbDriver, dbURL, dbUser, dbPassword, - maxConnections, DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION, dbValidationQuery, false, 50, 0); - } - - /** - * Create a connection pool using the given properties. - * - *

- * The properties passed should contain: - *

    - *
  • {@link #DB_DRIVER}- The database driver class name - *
  • {@link #DB_URL}- The database URL - *
  • {@link #DB_USER}- The database user - *
  • {@link #DB_PASSWORD}- The database password - *
  • {@link #DB_MAX_CONNECTIONS}- The maximum # connections in the pool, - * optional - *
  • {@link #DB_VALIDATION_QUERY}- The sql validation query, optional - *
- *

- * - * @param config - * configuration properties - */ - public PoolingConnectionProvider(Properties config) throws SchedulerException, SQLException { - PropertiesParser cfg = new PropertiesParser(config); - initialize( - cfg.getStringProperty(DB_DRIVER), - cfg.getStringProperty(DB_URL), - cfg.getStringProperty(DB_USER, ""), - cfg.getStringProperty(DB_PASSWORD, ""), - cfg.getIntProperty(DB_MAX_CONNECTIONS, DEFAULT_DB_MAX_CONNECTIONS), - cfg.getIntProperty(DB_MAX_CACHED_STATEMENTS_PER_CONNECTION, DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION), - cfg.getStringProperty(DB_VALIDATION_QUERY), - cfg.getBooleanProperty(DB_VALIDATE_ON_CHECKOUT, false), - cfg.getIntProperty(DB_IDLE_VALIDATION_SECONDS, 50), - cfg.getIntProperty(DB_DISCARD_IDLE_CONNECTIONS_SECONDS, 0)); - } - - /* - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * Interface. - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - /** - * Create the underlying C3PO ComboPooledDataSource with the - * default supported properties. - * @throws SchedulerException - */ - private void initialize( - String dbDriver, - String dbURL, - String dbUser, - String dbPassword, - int maxConnections, - int maxStatementsPerConnection, - String dbValidationQuery, - boolean validateOnCheckout, - int idleValidationSeconds, - int maxIdleSeconds) throws SQLException, SchedulerException { - if (dbURL == null) { - throw new SQLException( - "DBPool could not be created: DB URL cannot be null"); - } - - if (dbDriver == null) { - throw new SQLException( - "DBPool '" + dbURL + "' could not be created: " + - "DB driver class name cannot be null!"); - } - - if (maxConnections < 0) { - throw new SQLException( - "DBPool '" + dbURL + "' could not be created: " + - "Max connections must be greater than zero!"); - } - - - datasource = new ComboPooledDataSource(); - try { - datasource.setDriverClass(dbDriver); - } catch (PropertyVetoException e) { - throw new SchedulerException("Problem setting driver class name on datasource: " + e.getMessage(), e); - } - datasource.setJdbcUrl(dbURL); - datasource.setUser(dbUser); - datasource.setPassword(dbPassword); - datasource.setMaxPoolSize(maxConnections); - datasource.setMinPoolSize(1); - datasource.setMaxIdleTime(maxIdleSeconds); - datasource.setMaxStatementsPerConnection(maxStatementsPerConnection); - - if (dbValidationQuery != null) { - datasource.setPreferredTestQuery(dbValidationQuery); - if(!validateOnCheckout) - datasource.setTestConnectionOnCheckin(true); - else - datasource.setTestConnectionOnCheckout(true); - datasource.setIdleConnectionTestPeriod(idleValidationSeconds); - } - } - - /** - * Get the C3PO ComboPooledDataSource created during initialization. - * - *

- * This can be used to set additional data source properties in a - * subclass's constructor. - *

- */ - public ComboPooledDataSource getDataSource() { - return datasource; - } - - public Connection getConnection() throws SQLException { - return datasource.getConnection(); - } - - public void shutdown() throws SQLException { - datasource.close(); - } - - public void initialize() throws SQLException { - // do nothing, already initialized during constructor call - } } Index: 3rdParty_sources/quartz/org/quartz/utils/PropertiesParser.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/PropertiesParser.java (.../PropertiesParser.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/PropertiesParser.java (.../PropertiesParser.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/utils/StringKeyDirtyFlagMap.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/StringKeyDirtyFlagMap.java (.../StringKeyDirtyFlagMap.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/StringKeyDirtyFlagMap.java (.../StringKeyDirtyFlagMap.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Fisheye: Tag 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 refers to a dead (removed) revision in file `3rdParty_sources/quartz/org/quartz/utils/UpdateChecker.java'. Fisheye: No comparison available. Pass `N' to diff? Index: 3rdParty_sources/quartz/org/quartz/utils/counter/Counter.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/Counter.java (.../Counter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/Counter.java (.../Counter.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/CounterConfig.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/CounterConfig.java (.../CounterConfig.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/CounterConfig.java (.../CounterConfig.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/CounterImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/CounterImpl.java (.../CounterImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/CounterImpl.java (.../CounterImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/CounterManager.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/CounterManager.java (.../CounterManager.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/CounterManager.java (.../CounterManager.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/CounterManagerImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/CounterManagerImpl.java (.../CounterManagerImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/CounterManagerImpl.java (.../CounterManagerImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounter.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounter.java (.../SampledCounter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounter.java (.../SampledCounter.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounterConfig.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounterConfig.java (.../SampledCounterConfig.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounterConfig.java (.../SampledCounterConfig.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounterImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounterImpl.java (.../SampledCounterImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledCounterImpl.java (.../SampledCounterImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounter.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounter.java (.../SampledRateCounter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounter.java (.../SampledRateCounter.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounterConfig.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounterConfig.java (.../SampledRateCounterConfig.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounterConfig.java (.../SampledRateCounterConfig.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounterImpl.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounterImpl.java (.../SampledRateCounterImpl.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/SampledRateCounterImpl.java (.../SampledRateCounterImpl.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/TimeStampedCounterValue.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/TimeStampedCounterValue.java (.../TimeStampedCounterValue.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/counter/sampled/TimeStampedCounterValue.java (.../TimeStampedCounterValue.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /** - * Copyright 2003-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Index: 3rdParty_sources/quartz/org/quartz/utils/weblogic/WeblogicConnectionProvider.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/utils/weblogic/WeblogicConnectionProvider.java (.../WeblogicConnectionProvider.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/utils/weblogic/WeblogicConnectionProvider.java (.../WeblogicConnectionProvider.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/xml/ValidationException.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/xml/ValidationException.java (.../ValidationException.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/xml/ValidationException.java (.../ValidationException.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy Index: 3rdParty_sources/quartz/org/quartz/xml/XMLSchedulingDataProcessor.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/quartz/xml/XMLSchedulingDataProcessor.java (.../XMLSchedulingDataProcessor.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/quartz/xml/XMLSchedulingDataProcessor.java (.../XMLSchedulingDataProcessor.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -1,5 +1,5 @@ /* - * Copyright 2001-2010 Terracotta, Inc. + * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -174,6 +174,13 @@ docBuilderFactory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", resolveSchemaSource()); + docBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + docBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + docBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); + docBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + docBuilderFactory.setXIncludeAware(false); + docBuilderFactory.setExpandEntityReferences(false); + docBuilder = docBuilderFactory.newDocumentBuilder(); docBuilder.setErrorHandler(this); Index: 3rdParty_sources/quartz/org/terracotta/quartz/AbstractTerracottaJobStore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/terracotta/quartz/AbstractTerracottaJobStore.java (.../AbstractTerracottaJobStore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/terracotta/quartz/AbstractTerracottaJobStore.java (.../AbstractTerracottaJobStore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -230,6 +230,15 @@ } @Override + public void resetTriggerFromErrorState(final TriggerKey triggerKey) throws JobPersistenceException { + try { + realJobStore.resetTriggerFromErrorState(triggerKey); + } catch (RejoinException e) { + throw new JobPersistenceException("Trigger state reset failed due to client rejoin", e); + } + } + + @Override public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) throws SchedulerConfigException { init(); realJobStore.setInstanceId(schedInstId); @@ -598,6 +607,15 @@ } } + @Override + public long getAcquireRetryDelay(int failureCount) { + try { + return realJobStore.getAcquireRetryDelay(failureCount); + } catch (Exception e) { + return 20; + } + } + protected TerracottaJobStoreExtensions getRealJobStore() { return realJobStore; } Index: 3rdParty_sources/quartz/org/terracotta/quartz/DefaultClusteredJobStore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/terracotta/quartz/DefaultClusteredJobStore.java (.../DefaultClusteredJobStore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/terracotta/quartz/DefaultClusteredJobStore.java (.../DefaultClusteredJobStore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -823,11 +823,34 @@ return Trigger.TriggerState.NORMAL; } + @Override + public void resetTriggerFromErrorState(final TriggerKey triggerKey) throws JobPersistenceException { + + TriggerWrapper tw = triggerFacade.get(triggerKey); + // was the trigger deleted since being acquired? + if (tw == null) { + return; + } + // was the trigger completed, paused, blocked, etc. since being acquired? + if (tw.getState() != TriggerState.ERROR) { + return; + } + + if(triggerFacade.pausedGroupsContain(triggerKey.getGroup())) { + tw.setState(TriggerState.PAUSED, terracottaClientId, triggerFacade); + } + else { + tw.setState(TriggerState.WAITING, terracottaClientId, triggerFacade); + timeTriggers.add(tw); + } + } + + /** *

* Store the given {@link org.quartz.Calendar}. *

- * + * * @param calendar The Calendar to be stored. * @param replaceExisting If true, any Calendar existing in the JobStore with * the same name & group should be over-written. @@ -837,7 +860,7 @@ * @throws ObjectAlreadyExistsException if a Calendar with the same name already exists, and * replaceExisting is set to false. */ - @Override +@Override public void storeCalendar(String name, Calendar calendar, boolean replaceExisting, boolean updateTriggers) throws ObjectAlreadyExistsException, JobPersistenceException { @@ -2006,6 +2029,11 @@ throw new AssertionError(); } + @Override + public long getAcquireRetryDelay(int failureCount) { + return retryInterval; + } + void injectTriggerWrapper(final TriggerWrapper triggerWrapper) { timeTriggers.add(triggerWrapper); } Index: 3rdParty_sources/quartz/org/terracotta/quartz/PlainTerracottaJobStore.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- 3rdParty_sources/quartz/org/terracotta/quartz/PlainTerracottaJobStore.java (.../PlainTerracottaJobStore.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ 3rdParty_sources/quartz/org/terracotta/quartz/PlainTerracottaJobStore.java (.../PlainTerracottaJobStore.java) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -130,6 +130,11 @@ } @Override + public void resetTriggerFromErrorState(final TriggerKey triggerKey) throws JobPersistenceException { + clusteredJobStore.resetTriggerFromErrorState(triggerKey); + } + + @Override public synchronized void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) throws SchedulerConfigException { if (clusteredJobStore != null) { throw new IllegalStateException("already initialized"); } @@ -151,8 +156,6 @@ clusteredJobStore.setTcRetryInterval(tcRetryInterval); clusteredJobStore.initialize(loadHelper, signaler); - // update check - scheduleUpdateCheck(); } @Override @@ -381,6 +384,11 @@ } @Override + public long getAcquireRetryDelay(int failureCount) { + return tcRetryInterval; + } + + @Override public String getUUID() { return toolkit.getClientUUID(); } @@ -389,13 +397,6 @@ return (T) new DefaultClusteredJobStore(useSynchWrite, toolkit, schedulerName); } - private void scheduleUpdateCheck() { - if (!Boolean.getBoolean("org.terracotta.quartz.skipUpdateCheck")) { - updateCheckTimer = new Timer("Update Checker", true); - updateCheckTimer.scheduleAtFixedRate(new UpdateChecker(), 100, WEEKLY); - } - } - @Override public long getEstimatedTimeToReleaseAndAcquireTrigger() { return clusteredJobStore.getEstimatedTimeToReleaseAndAcquireTrigger(); Fisheye: Tag 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 refers to a dead (removed) revision in file `3rdParty_sources/quartz/org/terracotta/quartz/UpdateChecker.java'. Fisheye: No comparison available. Pass `N' to diff? Index: idea_project/.idea/libraries/3rdParty.xml =================================================================== diff -u -rca3e06f3b65d2880d69fd5278773c5c71e1ca3e7 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- idea_project/.idea/libraries/3rdParty.xml (.../3rdParty.xml) (revision ca3e06f3b65d2880d69fd5278773c5c71e1ca3e7) +++ idea_project/.idea/libraries/3rdParty.xml (.../3rdParty.xml) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -7,10 +7,8 @@ - - @@ -57,6 +55,7 @@ + Index: lams_build/lib/quartz/quartz-2.2.3.jar =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 Binary files differ Index: lams_build/lib/quartz/quartz-2.3.2.jar =================================================================== diff -u Binary files differ Index: lams_build/lib/quartz/quartz.module.xml =================================================================== diff -u -r5661c79b661c18221c0eb5e32fe7ec54110e5a65 -r7a52ff105bdf91d903cd180e6b5bbf7bd2810b71 --- lams_build/lib/quartz/quartz.module.xml (.../quartz.module.xml) (revision 5661c79b661c18221c0eb5e32fe7ec54110e5a65) +++ lams_build/lib/quartz/quartz.module.xml (.../quartz.module.xml) (revision 7a52ff105bdf91d903cd180e6b5bbf7bd2810b71) @@ -24,7 +24,7 @@ - +