私は今、いくつかの時間のためにプレイFrameworkでJPAを使用してきた、とすべてがうまく行っていた - しかし、私は今、私は明白な解決策が表示されませんエラーに対して出ています。ちょうどコンテキストのために、私が作成しようとしているのは基本的なソーシャルネットワークです。タイムアウト。なぜこれが起こっているのですか?それをどうやって修正しますか?
私はPostクラスを持っている:
public class Post extends Model {
private String owner;
private long timestamp;
@ElementCollection
private List<String> viewers;
private String content;
public Post(String owner, List<String> viewers, String content) {
this.timestamp = System.currentTimeMillis();
this.owner = owner;
this.viewers = viewers;
this.content = content;
System.out.println("Saving post by " + owner + " with timestamp:" + this.timestamp);
}
(Getters and setters ignored here)
}
私は記事を追加し、ユーザークラスがあります。
public long addPost(String viewers, String content) {
LinkedList<String> viewersList = new LinkedList(Arrays.asList(viewers.split(",")));
Post newPost = new Post(this.name, viewersList, content);
newPost.save();
return newPost.getTimestamp();
}
を私は投稿と投稿の検索のストリームマネージャ処理通知を持っています。
public static void executePost(String content, String viewers) {
System.out.println("Post content: " + content);
String user = session.get("username");
User u = User.connect(user);
if (u == null) {
System.out.println("User is null");
}
/* Add post to local record of posts */
long timestamp = u.addPost(viewers, content);
/* Send notification of post to server */
}
私は、並行性のいくつかの量がシステムに存在していることを意味し、3つのスレッドのスレッドプールで自分のアプリケーションを実行していますよ。システムが通知(executePostの終了)した後、サーバーからの応答を待っている間に、別のスレッドがこのコードを使用して、新しく作成された後にアクセスしようとしている:フレームワークは言って、厄介なエラーがスローされます
public static void retrievePost(String owner, String timestamp) {
byte[] postAndKey = new byte[1024];
byte[] post = null;
byte[] encryptedKey = null;
User u = User.connect(owner);
Post.findAll();
//List<Post> posts = (Post.find("byOwner", owner).fetch());
System.out.println("Looking for post by " + owner + " at timestamp: " + timestamp);
//System.out.println("Looking through: " + posts.size() + " posts");
Post.findAll()
で私はTimeout trying to lock table "POST"
があること。私は別のretrievePost()
でポストにアクセスしようとしている間に1つのスレッドがexecutePost()
にまだあるので、これがあると思われます。ポストは「保存」されていることを考えると、しかし、ロックが解除されているべきではないのですか?これは本当に理由ですか、エラーの周りには何か方法がありますか?
ありがとうございました。
私がプレイしてJPAが、最初のステップについてはあまり知らないがexecutePost'、' newPost.save() 'の周りにいくつかのログ・ステートメントを置くことです –