diff options
-rw-r--r-- | Locking.md | 14 | ||||
-rwxr-xr-x | pom.xml | 83 | ||||
-rw-r--r-- | src/main/java/io/trygvis/async/spring/SpringJdbcAsyncService.java | 2 | ||||
-rwxr-xr-x | src/main/java/io/trygvis/data/QueueRepository.java | 8 | ||||
-rwxr-xr-x | src/main/java/io/trygvis/data/TaskRepository.java | 11 | ||||
-rwxr-xr-x | src/test/java/io/trygvis/test/Article.java | 9 | ||||
-rwxr-xr-x | src/test/java/io/trygvis/test/CreateArticleCallable.java | 3 | ||||
-rwxr-xr-x | src/test/java/io/trygvis/test/Main.java | 4 | ||||
-rwxr-xr-x | src/test/java/io/trygvis/test/UpdateArticleCallable.java | 4 |
9 files changed, 55 insertions, 83 deletions
diff --git a/Locking.md b/Locking.md new file mode 100644 index 0000000..aea1d62 --- /dev/null +++ b/Locking.md @@ -0,0 +1,14 @@ +Test data: + + begin; + drop table x; + create table x(id integer not null primary key, value integer default random() * 1000); + insert into x(id) select * from generate_series(1, 100); + commit; + +Execution: + + rollback; + begin; + select id from (select id from x order by value limit 10) as rows where pg_try_advisory_xact_lock(id); + @@ -5,96 +5,94 @@ <version>1.0-SNAPSHOT</version> <dependencies> <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-jpamodelgen</artifactId> - <version>1.2.0.Final</version> - </dependency> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-entitymanager</artifactId> - <version>4.1.9.Final</version> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${version.slf4j}</version> </dependency> + + <!-- Provided Spring dependencies --> <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-core</artifactId> - <version>4.1.9.Final</version> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>${version.spring}</version> + <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> + <artifactId>spring-tx</artifactId> <version>${version.spring}</version> + <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-context-support</artifactId> + <artifactId>spring-jdbc</artifactId> <version>${version.spring}</version> + <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-orm</artifactId> + <artifactId>spring-beans</artifactId> <version>${version.spring}</version> + <scope>provided</scope> </dependency> + <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${version.spring}</version> <scope>test</scope> </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-jpa</artifactId> - <version>1.2.0.RELEASE</version> + <groupId>org.easytesting</groupId> + <artifactId>fest-assert</artifactId> + <version>1.4</version> + <scope>test</scope> </dependency> + <dependency> <groupId>com.jolbox</groupId> <artifactId>bonecp-spring</artifactId> <version>0.7.1.RELEASE</version> + <scope>test</scope> </dependency> - <dependency> - <groupId>org.quartz-scheduler</groupId> - <artifactId>quartz</artifactId> - <version>2.1.7</version> - <exclusions> - <exclusion> - <groupId>c3p0</groupId> - <artifactId>c3p0</artifactId> - </exclusion> - </exclusions> - </dependency> + <!-- BoneCP depends on Guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>14.0.1</version> + <scope>test</scope> </dependency> + <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.0.9</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> - <version>1.7.2</version> + <version>${version.slf4j}</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>1.7.2</version> + <version>${version.slf4j}</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.2-1002-jdbc4</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.11</version> - </dependency> - <dependency> - <groupId>org.easytesting</groupId> - <artifactId>fest-assert</artifactId> - <version>1.4</version> + <scope>test</scope> </dependency> </dependencies> <dependencyManagement> @@ -102,17 +100,18 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>1.7.2</version> + <version>${version.slf4j}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> - <version>1.7.2</version> + <version>${version.slf4j}</version> </dependency> </dependencies> </dependencyManagement> <properties> <version.spring>3.2.2.RELEASE</version.spring> + <version.slf4j>1.7.2</version.slf4j> </properties> <build> <plugins> diff --git a/src/main/java/io/trygvis/async/spring/SpringJdbcAsyncService.java b/src/main/java/io/trygvis/async/spring/SpringJdbcAsyncService.java index 8517c68..327dffa 100644 --- a/src/main/java/io/trygvis/async/spring/SpringJdbcAsyncService.java +++ b/src/main/java/io/trygvis/async/spring/SpringJdbcAsyncService.java @@ -7,7 +7,6 @@ import io.trygvis.queue.Queue; import io.trygvis.queue.Task; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.ConnectionCallback; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.transaction.annotation.Transactional; @@ -15,7 +14,6 @@ import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationAdapter; import org.springframework.transaction.support.TransactionTemplate; -import javax.annotation.PostConstruct; import java.sql.Connection; import java.sql.SQLException; import java.util.concurrent.Executors; diff --git a/src/main/java/io/trygvis/data/QueueRepository.java b/src/main/java/io/trygvis/data/QueueRepository.java deleted file mode 100755 index 4ea6707..0000000 --- a/src/main/java/io/trygvis/data/QueueRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.trygvis.data; - -import io.trygvis.queue.Queue; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface QueueRepository extends JpaRepository<Queue, Long> { - Queue findByName(String name); -} diff --git a/src/main/java/io/trygvis/data/TaskRepository.java b/src/main/java/io/trygvis/data/TaskRepository.java deleted file mode 100755 index c0df329..0000000 --- a/src/main/java/io/trygvis/data/TaskRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.trygvis.data; - -import io.trygvis.queue.Queue; -import io.trygvis.queue.Task; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.List; - -public interface TaskRepository extends JpaRepository<Task, Long> { - List<Task> findByQueueAndCompletedIsNull(Queue queue); -} diff --git a/src/test/java/io/trygvis/test/Article.java b/src/test/java/io/trygvis/test/Article.java index d4f54ce..bf52e41 100755 --- a/src/test/java/io/trygvis/test/Article.java +++ b/src/test/java/io/trygvis/test/Article.java @@ -1,17 +1,8 @@ package io.trygvis.test; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; import java.util.Date; -@Entity public class Article { - @Id - @SequenceGenerator(name="id_seq", sequenceName="id_seq") - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_seq") private Integer id; private Date created; private Date updated; diff --git a/src/test/java/io/trygvis/test/CreateArticleCallable.java b/src/test/java/io/trygvis/test/CreateArticleCallable.java index f68cd5b..a822a51 100755 --- a/src/test/java/io/trygvis/test/CreateArticleCallable.java +++ b/src/test/java/io/trygvis/test/CreateArticleCallable.java @@ -17,9 +17,6 @@ import static org.springframework.transaction.annotation.Propagation.MANDATORY; public class CreateArticleCallable implements AsyncService.AsyncCallable { private final Logger log = LoggerFactory.getLogger(getClass()); -// @PersistenceContext -// private EntityManager entityManager; - private Random random = new Random(); public void run(List<String> arguments) throws Exception { diff --git a/src/test/java/io/trygvis/test/Main.java b/src/test/java/io/trygvis/test/Main.java index 721df61..d274101 100755 --- a/src/test/java/io/trygvis/test/Main.java +++ b/src/test/java/io/trygvis/test/Main.java @@ -3,7 +3,6 @@ package io.trygvis.test; import io.trygvis.async.AsyncService; import io.trygvis.queue.Queue; import io.trygvis.queue.Task; -import org.hibernate.dialect.PostgreSQL82Dialect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.bridge.SLF4JBridgeHandler; @@ -31,9 +30,6 @@ public class Main { setProperty("database.url", getProperty("jdbc.url", "jdbc:postgresql://localhost/" + username)); setProperty("database.username", username); setProperty("database.password", username); -// setProperty("hibernate.showSql", "true"); - setProperty("hibernate.hbm2ddl.auto", "create"); // create - setProperty("hibernate.dialect", PostgreSQL82Dialect.class.getName()); log.info("Starting context"); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); diff --git a/src/test/java/io/trygvis/test/UpdateArticleCallable.java b/src/test/java/io/trygvis/test/UpdateArticleCallable.java index aae28b9..f50c10a 100755 --- a/src/test/java/io/trygvis/test/UpdateArticleCallable.java +++ b/src/test/java/io/trygvis/test/UpdateArticleCallable.java @@ -16,10 +16,6 @@ public class UpdateArticleCallable private final Random r = new Random(); -// @PersistenceContext -// private EntityManager entityManager; - -// @Transactional(propagation = REQUIRES_NEW) public void run(List<String> arguments) throws Exception { log.info("UpdateArticeJob.run: BEGIN"); |