当前位置: 动力学知识库 > 问答 > 编程问答 >

java.lang.RuntimeException: exception while registering MBean, com.scale7.cassandra.pelops.pool:type=PooledNode-my_keyspace-localhost

问题描述:

I am working on a project in which I need to insert data into Cassandra database. So for that I am using Pelops client.

I have a Multithreaded code which will insert into Cassandra database using Pelops client. And I am using ExecutorService for that.

In my program, each thread will work on some range, like

Thread1 will work on 1 to 20

Thread2 will work on 21 to 40

...

...

Below is the code I have which I am using to insert into Cassandra database-

private static int noOfThreads = 5;

private static int noOfTasks = 100;

private static int startRange = 1;

public static void main(String[] args) {

LOG.info("Loading data in Cassandra database..!!");

ExecutorService service = Executors.newFixedThreadPool(noOfThreads);

try {

// queue some tasks

for (int i = 0, nextId = startRange; i < noOfThreads; i++, nextId += noOfTasks) {

service.submit(new CassandraTask(nextId, noOfTasks));

}

service.shutdown();

service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);

} catch (InterruptedException e) {

LOG.warn("Threw a Interrupted Exception in" + CNAME + ".PelopsLnPClient: boss told me to stop...Not my fault!!");

} catch (Exception e) {

LOG.error("Threw a Exception in" + CNAME + e);

}

}

Below is the CassandraTask class that implements Runnable interface

class CassandraTask implements Runnable {

private final int id;

private final int noOfTasks;

private final String nodes = "localhost";

private final String thrift_connection_pool = "Test Cluster";

private final String keyspace = "my_keyspace";

private final String column_family = "PROFILE_USER";

public CassandraTask(int nextId, int noOfTasks) {

this.id = nextId;

this.noOfTasks = noOfTasks;

}

public void run() {

try {

cassandraConnection();

Mutator mutator = Pelops.createMutator(thrift_connection_pool);

for (int userId = id; userId < id + noOfTasks; userId++) {

mutator.writeColumns(column_family, String.valueOf(userId),

mutator.newColumnList(

mutator.newColumn("unt", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),

mutator.newColumn("rtising", "{\"lv\":[{\"v\":{\"thirdPartyAdsOnhostdomain\":null,\"hostdomainAdsOnThirdParty\":null,\"userId\":" + userId + "},\"cn\":2}],\"lmd\":20130206211109}"),

mutator.newColumn("selling_price_main_cats", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),

mutator.newColumn("and_keyword_rules", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),

mutator.newColumn("categories_purchased", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),

mutator.newColumn("omer_service", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),

mutator.newColumn("graphic", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),

mutator.newColumn("rite_searches", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}")

));

}

mutator.execute(ConsistencyLevel.ONE);

} catch (Exception e) {

System.err.println("Threw a Exception in " + e);

} finally {

Pelops.shutdown();

}

}

/**

* Making a Cassandra Connection by adding nodes

*

/

private void cassandraConnection() {

Cluster cluster = new Cluster(nodes, 9160);

Pelops.addPool(thrift_connection_pool, cluster, keyspace);

}

}

Whenever I am running the above program, I am getting below exceptions always-

Threw a Exception in java.lang.RuntimeException: exception while registering MBean, com.scale7.cassandra.pelops.pool:type=PooledNode-my_keyspace-localhost

Can anyone help me out with this what wrong I am doing here? I believe there is some minor mistake I am making here? If I am running slowly slowly then I don't get this exception. By slow I means, by putting breakpoint in the code. Very strange somehow.

I am working with Cassandra 1.2.3

Any help will be appreciated.

网友答案:

Which client version are you using? As far as I can see each thread creates a pool (with same name!) to cassandra and each one shutdown the Pelops client.

Move the pool creation in the main class, create just one pool and access it from the threads and never call Pelops.shutdown() until the last thread performed the execute method.

Carlo

分享给朋友:
您可能感兴趣的文章:
随机阅读: