[solved]. zkClient needs a serializer. This is the final code:
ZkClient zkClient = new ZkClient(zookeeperCluster, 30000, 30000); zkClient.setZkSerializer(new ZkSerializer() { @Override public byte[] serialize(Object o) throws ZkMarshallingError { return ZKStringSerializer.serialize(o); } @Override public Object deserialize(byte[] bytes) throws ZkMarshallingError { return ZKStringSerializer.deserialize(bytes); } }); CreateTopicCommand.createTopic(zkClient, topic, numPartitions.intValue(), replicationFactor.intValue(), ""); zkClient.close(); Regards. 2014-02-25 18:50 GMT+01:00 David Morales de Frías < dmora...@paradigmatecnologico.com>: > Nope... i have checked this and replication factor is 1. Anyway, when i > tried to increase this param, an exception is thrown (rep. factor greater > than num. of brokers). > > There is no difference in this code and the script, apparently, i can only > see changes in the constructor used in zkClient. > > Any clue? > > > Thanks. > > > 2014-02-25 18:41 GMT+01:00 Neha Narkhede <neha.narkh...@gmail.com>: > > David, >> >> Topic creation can fail if you specify the replication factor > # of >> brokers in the cluster. Can you check if that is true in your case? >> Unfortunately, I don't think we fail the createTopic() API with the >> appropriate exception since there is still a race condition where the >> broker can come up after you do the check and before you throw the >> exception. We are trying to fix this behavior in one of the upcoming >> releases to let topic creation succeed even if the # of live brokers in >> the >> cluster is less than the replication factor at topic creation time. >> >> Thanks, >> Neha >> >> >> On Tue, Feb 25, 2014 at 8:39 AM, David Morales de Frías < >> dmora...@paradigmatecnologico.com> wrote: >> >> > This is the code that i can see in CreateTopicCommand >> > >> > >> > var zkClient: ZkClient = null >> > try { >> > zkClient = new ZkClient(zkConnect, 30000, 30000, >> ZKStringSerializer) >> > createTopic(zkClient, topic, nPartitions, replicationFactor, >> > replicaAssignmentStr) >> > println("creation succeeded!") >> > } catch { >> > case e: Throwable => >> > println("creation failed because of " + e.getMessage) >> > println(Utils.stackTrace(e)) >> > } finally { >> > if (zkClient != null) >> > zkClient.close() >> > } >> > >> > >> > Mine is *ZkClient zkClient = new ZkClient(zookeeperCluster, 30000, >> 30000);* >> > >> > >> > >> > Thanks >> > >> > >> > >> > 2014-02-25 17:25 GMT+01:00 Jun Rao <jun...@gmail.com>: >> > >> > > Is the ZK connection string + namespace the same btw the code and the >> > > script? >> > > >> > > Thanks, >> > > >> > > Jun >> > > >> > > >> > > On Tue, Feb 25, 2014 at 3:01 AM, David Morales de Frías < >> > > dmora...@paradigmatecnologico.com> wrote: >> > > >> > > > Hi there, >> > > > >> > > > I'm trying to create a topic from java code, by calling >> > > CreateTopicCommand: >> > > > >> > > > >> > > > *ZkClient zkClient = new ZkClient(zookeeperCluster, 30000, 30000);* >> > > > >> > > > *CreateTopicCommand.createTopic(zkClient, topic, >> > > > numPartitions.intValue(),replicationFactor.intValue(), "");* >> > > > >> > > > *zkClient.close();* >> > > > >> > > > >> > > > The program runs without errors and even if i call it twice, the >> second >> > > > time i receive an exception telling me that this topic already >> exists. >> > > > >> > > > But, if run a list-topics, the topic doesn't appear... and there is >> no >> > > > folder under kafka-logs >> > > > >> > > > If i want to create it by using the create-topic script, it prints >> that >> > > the >> > > > topic already exists¡ >> > > > >> > > > Any idea about that? >> > > > >> > > > >> > > > >> > > > Regards. >> > > > >> > > >> > >> > >