Details

    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.6.0
    • Fix Version/s: 1.0.0
    • Component/s: general
    • Labels:
    1. BIGTOP-989.patch
      18 kB
      Kam Kasravi
    2. BIGTOP-989-1.patch
      30 kB
      Kam Kasravi
    3. BIGTOP-989-2.patch
      30 kB
      Kam Kasravi
    4. BIGTOP-989-3.patch
      33 kB
      Manikandan Narayanaswamy
    5. BIGTOP-989-4.patch
      32 kB
      Manikandan Narayanaswamy
    6. BIGTOP-989-5.patch
      32 kB
      Manikandan Narayanaswamy
    7. BIGTOP-989-6.patch
      32 kB
      Manikandan Narayanaswamy
    8. BIGTOP-989-7.patch
      32 kB
      Manikandan Narayanaswamy
    9. BIGTOP-989-8.patch
      31 kB
      Manikandan Narayanaswamy
    10. BIGTOP-989-9.patch
      32 kB
      Manikandan Narayanaswamy

      Issue Links

        Activity

        Hide
        rvs Roman Shaposhnik added a comment -

        Diederik, any chance you guys can work on this? We will be voting on the BOM for Bigtop 0.7.0 in a couple of weeks – would be nice to have Kafka in there.

        Show
        rvs Roman Shaposhnik added a comment - Diederik, any chance you guys can work on this? We will be voting on the BOM for Bigtop 0.7.0 in a couple of weeks – would be nice to have Kafka in there.
        Hide
        diederik Diederik van Liere added a comment -

        Hi Roman,
        At Wikipedia, we are trying to create a Debian package for Kafka 0.8; if we are successful then we will submit a patch for sure. But if other folks have already made progress then I would love to see their work as well
        D

        Show
        diederik Diederik van Liere added a comment - Hi Roman, At Wikipedia, we are trying to create a Debian package for Kafka 0.8; if we are successful then we will submit a patch for sure. But if other folks have already made progress then I would love to see their work as well D
        Hide
        kkasravi Kam Kasravi added a comment -

        I've provided a patch which builds and installs kafka as a service. eg kafka --start. I'm working expanding what the service can do such as specifying different brokers, zookeeper as well as mapping to other commands under kafka/bin/ like kafka-list-topic.sh, etc.

        Show
        kkasravi Kam Kasravi added a comment - I've provided a patch which builds and installs kafka as a service. eg kafka --start. I'm working expanding what the service can do such as specifying different brokers, zookeeper as well as mapping to other commands under kafka/bin/ like kafka-list-topic.sh, etc.
        Hide
        apurtell Andrew Purtell added a comment -

        Kam Kasravi Looks like the installed bin/kafka script functions something like 'apachectl'. Why not a sysvinit service? See Bigtop packages which launch daemons, for example the ZooKeeper one.

        Show
        apurtell Andrew Purtell added a comment - Kam Kasravi Looks like the installed bin/kafka script functions something like 'apachectl'. Why not a sysvinit service? See Bigtop packages which launch daemons, for example the ZooKeeper one.
        Hide
        kkasravi Kam Kasravi added a comment -

        Thanks Andy! - I was following the model in spark. I'll look at zookeeper.

        Show
        kkasravi Kam Kasravi added a comment - Thanks Andy! - I was following the model in spark. I'll look at zookeeper.
        Hide
        plinnell Peter Linnell added a comment -

        Looks good. Nit: please use bin/bash, as /bin/sh is ambiguous on some distros. I also agree we need an initscript and eventually a systemd file.

        Thanks for the patch!

        Show
        plinnell Peter Linnell added a comment - Looks good. Nit: please use bin/bash, as /bin/sh is ambiguous on some distros. I also agree we need an initscript and eventually a systemd file. Thanks for the patch!
        Hide
        kkasravi Kam Kasravi added a comment -

        Thanks Peter! - will address both issues when I get back next week.

        Show
        kkasravi Kam Kasravi added a comment - Thanks Peter! - will address both issues when I get back next week.
        Hide
        ottomata Andrew Otto added a comment -

        This might not be worth noting, but WMF has succeeded in debianizing Kafka 0.8. Kafka's built in build system did not satisfy some of our security policies for building .debs (mainly, pulling in .jars from the internet at large). Where possible, dependencies have been satisfied by upstream debian apt repos. Where not possible, the .jars have been committed directly to this repository. sbt has been replaced with Make.

        https://github.com/wikimedia/operations-debs-kafka/tree/debian

        It is probably better to stick with Kafka's default build system for Bigtop, but I thought I should mention this anyway.

        Show
        ottomata Andrew Otto added a comment - This might not be worth noting, but WMF has succeeded in debianizing Kafka 0.8. Kafka's built in build system did not satisfy some of our security policies for building .debs (mainly, pulling in .jars from the internet at large). Where possible, dependencies have been satisfied by upstream debian apt repos. Where not possible, the .jars have been committed directly to this repository. sbt has been replaced with Make. https://github.com/wikimedia/operations-debs-kafka/tree/debian It is probably better to stick with Kafka's default build system for Bigtop, but I thought I should mention this anyway.
        Hide
        kkasravi Kam Kasravi added a comment -

        I've provided a new patch which works on debian, suse environments which uses sysvinit services. I can probably provide a systemd file at a later time. I'll work on BIGTOP-1024 next to see if I can add sbt to the bigtop environment rather than running sbt locally. Thanks!

        Show
        kkasravi Kam Kasravi added a comment - I've provided a new patch which works on debian, suse environments which uses sysvinit services. I can probably provide a systemd file at a later time. I'll work on BIGTOP-1024 next to see if I can add sbt to the bigtop environment rather than running sbt locally. Thanks!
        Hide
        rvs Roman Shaposhnik added a comment -

        Has there been any updates on this? I'm curious since I see that the Spark packaging went in and it would be really nice if we can also rationalize the Scala aspects of it.

        Show
        rvs Roman Shaposhnik added a comment - Has there been any updates on this? I'm curious since I see that the Spark packaging went in and it would be really nice if we can also rationalize the Scala aspects of it.
        Hide
        kkasravi Kam Kasravi added a comment -

        Yes, I uploaded a new patch - sorry the 'patch available' option no longer seems to be there. The new patch follows sysvinit script recommendations.
        Note - there will likely be some updates related to configuration that I fold into kafka - for example adding additional zookeeper servers - however I'll 
        do these a separate JIRA's.

        Show
        kkasravi Kam Kasravi added a comment - Yes, I uploaded a new patch - sorry the 'patch available' option no longer seems to be there. The new patch follows sysvinit script recommendations. Note - there will likely be some updates related to configuration that I fold into kafka - for example adding additional zookeeper servers - however I'll  do these a separate JIRA's.
        Hide
        plinnell Peter Linnell added a comment -

        Your second patch looks like it won't apply. Please take a look. Thanks

        Show
        plinnell Peter Linnell added a comment - Your second patch looks like it won't apply. Please take a look. Thanks
        Hide
        kkasravi Kam Kasravi added a comment -

        Peter - could you provide some details as to why?

        thanks
        Kam

        Show
        kkasravi Kam Kasravi added a comment - Peter - could you provide some details as to why? thanks Kam
        Hide
        apurtell Andrew Purtell added a comment -

        Kam Kasravi You posted a diff in the wrong direction.

        Show
        apurtell Andrew Purtell added a comment - Kam Kasravi You posted a diff in the wrong direction.
        Hide
        kkasravi Kam Kasravi added a comment -

        Provided updated patch

        Show
        kkasravi Kam Kasravi added a comment - Provided updated patch
        Hide
        plinnell Peter Linnell added a comment -

        Patch looks good. Will test in the next day or so. Thanks!

        Show
        plinnell Peter Linnell added a comment - Patch looks good. Will test in the next day or so. Thanks!
        Hide
        cos Konstantin Boudnik added a comment -

        Peter Linnell, Roman Shaposhnik: any update on the patch/ticket?

        Show
        cos Konstantin Boudnik added a comment - Peter Linnell , Roman Shaposhnik : any update on the patch/ticket?
        Hide
        rvs Roman Shaposhnik added a comment -

        Konstantin Boudnik it pains me to say this, but I totally drop the ball on this one. Would really appreciate if anybody else can help since adding Kafka to 0.8.0 would be really nice.

        Show
        rvs Roman Shaposhnik added a comment - Konstantin Boudnik it pains me to say this, but I totally drop the ball on this one. Would really appreciate if anybody else can help since adding Kafka to 0.8.0 would be really nice.
        Hide
        kkasravi Kam Kasravi added a comment -

        Hi Roman

        I can add some new patch files - I'll see if we can do 0.8.1. 

        Thanks
        Kam

        On Saturday, May 31, 2014 7:45 AM, Roman Shaposhnik (JIRA) <jira@apache.org> wrote:

            [ https://issues.apache.org/jira/browse/BIGTOP-989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14014672#comment-14014672 ]

        Roman Shaposhnik commented on BIGTOP-989:
        -----------------------------------------

        Konstantin Boudnik it pains me to say this, but I totally drop the ball on this one. Would really appreciate if anybody else can help since adding Kafka to 0.8.0 would be really nice.


        This message was sent by Atlassian JIRA
        (v6.2#6252)

        Show
        kkasravi Kam Kasravi added a comment - Hi Roman I can add some new patch files - I'll see if we can do 0.8.1.  Thanks Kam On Saturday, May 31, 2014 7:45 AM, Roman Shaposhnik (JIRA) <jira@apache.org> wrote:     [ https://issues.apache.org/jira/browse/BIGTOP-989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14014672#comment-14014672 ] Roman Shaposhnik commented on BIGTOP-989 : ----------------------------------------- Konstantin Boudnik it pains me to say this, but I totally drop the ball on this one. Would really appreciate if anybody else can help since adding Kafka to 0.8.0 would be really nice. – This message was sent by Atlassian JIRA (v6.2#6252)
        Hide
        rvs Roman Shaposhnik added a comment -

        Kam Kasravi great to hear this!

        Show
        rvs Roman Shaposhnik added a comment - Kam Kasravi great to hear this!
        Hide
        mnarayan Manikandan Narayanaswamy added a comment - - edited

        With the patch provided, one would be able to build RPM and Deb packages for kafka 0.8.1.1 and install successfully.

        Would appreciate some feedback / comments.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - - edited With the patch provided, one would be able to build RPM and Deb packages for kafka 0.8.1.1 and install successfully. Would appreciate some feedback / comments.
        Hide
        cos Konstantin Boudnik added a comment -

        It would be great to also have some tests for the new component as a part of the same patch.
        Also, any chance you can add at least a minimalistic Puppet recipes to setup the Kafka cluster?

        Show
        cos Konstantin Boudnik added a comment - It would be great to also have some tests for the new component as a part of the same patch. Also, any chance you can add at least a minimalistic Puppet recipes to setup the Kafka cluster?
        Hide
        rvs Roman Shaposhnik added a comment -

        Kam Kasravi ping! any chance to address the points that Konstantin Boudnik was raising in the previous comment? I'd love to have Kafka as part of Bigtop 0.9.0.

        Show
        rvs Roman Shaposhnik added a comment - Kam Kasravi ping! any chance to address the points that Konstantin Boudnik was raising in the previous comment? I'd love to have Kafka as part of Bigtop 0.9.0.
        Hide
        warwithin YoungWoo Kim added a comment - - edited

        Any progress on this? Attached patch does not apply cleanly.

        Show
        warwithin YoungWoo Kim added a comment - - edited Any progress on this? Attached patch does not apply cleanly.
        Hide
        rvs Roman Shaposhnik added a comment -

        It would be great if:

        • patch gets updated
        • somebody volunteers to be a Kafka maintainer in Bigtop
        Show
        rvs Roman Shaposhnik added a comment - It would be great if: patch gets updated somebody volunteers to be a Kafka maintainer in Bigtop
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        I'll update the patch shortly.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - I'll update the patch shortly.
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Synced latest bigtop code and ensured that one can build kafka rpm and deb packages. Installed the package and did the following:
        1. Started the service.
        2. Checked status of service.
        3. Stopped the service.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Synced latest bigtop code and ensured that one can build kafka rpm and deb packages. Installed the package and did the following: 1. Started the service. 2. Checked status of service. 3. Stopped the service.
        Hide
        mgrover Mark Grover added a comment - - edited

        Thanks Mani! Overall this looks good, thanks for posting a patch, here are a few comments:

        • I don't think kafka package should depend on zookeeper-server. Depending on zookeeper is ok but it's rare that a non-server package needs to depend on a server package.
        • In the init file, I noticed that there was a reference to PIDFI. The variable name seems to have been truncated from PIDFILE, can you take a second look, please?
        • Any particular reason the files section in spec file doesn't include all of bin instead of individually listing out each of the files in it?
        • Copyright should say 2015 instead of 2014

        Thanks!

        Show
        mgrover Mark Grover added a comment - - edited Thanks Mani! Overall this looks good, thanks for posting a patch, here are a few comments: I don't think kafka package should depend on zookeeper-server. Depending on zookeeper is ok but it's rare that a non-server package needs to depend on a server package. In the init file, I noticed that there was a reference to PIDFI. The variable name seems to have been truncated from PIDFILE, can you take a second look, please? Any particular reason the files section in spec file doesn't include all of bin instead of individually listing out each of the files in it? Copyright should say 2015 instead of 2014 Thanks!
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Thanks for the feedback, Mark. I've uploaded another patch addressing comments.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Thanks for the feedback, Mark. I've uploaded another patch addressing comments.
        Hide
        oflebbe Olaf Flebbe added a comment -

        I have no special interests in kafka, just checked the build.

        It does not break build on debian for me, lintian Errors and Warnings are at the default bigtop noise level, with one tiny exception: This package uses /var/local/kafka/data. That is pretty unusual since this directory is usually reserved for code installed in /usr/local (see http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html).

        I would recommend to change config to use /var/lib/kafka/data instead, if it can be done quickly without any additional problems.

        This contribution surely was a lot of work.

        Show
        oflebbe Olaf Flebbe added a comment - I have no special interests in kafka, just checked the build. It does not break build on debian for me, lintian Errors and Warnings are at the default bigtop noise level, with one tiny exception: This package uses /var/local/kafka/data. That is pretty unusual since this directory is usually reserved for code installed in /usr/local (see http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html ). I would recommend to change config to use /var/lib/kafka/data instead, if it can be done quickly without any additional problems. This contribution surely was a lot of work.
        Hide
        jayunit100 jay vyas added a comment - - edited

        Awesome!

        One last thing: Can you help us craft jiras for the following tasks ?

        • we need puppet recipes to setup and install kafka on the nodes.
        • we need smoke tests for kafka.

        Can you help us spec out a JIRA for that Manikandan Narayanaswamy , Then im okay to commit .... test result of running

         
        bigtop-apache * master >  rpm -qlp ./output/kafka/noarch/kafka-0.9.1-1.fc20.noarch.rpm   | grep jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/jopt-simple-3.2.jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/log4j-1.2.15.jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/metrics-core-2.2.0.jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/scala-library-2.8.0.jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/slf4j-api-1.7.2.jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/snappy-java-1.0.5.jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/zkclient-0.3.jar
        /usr/lib/kafka/core/build/dependant-libs-2.8.0/zookeeper-3.3.4.jar
        /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1-javadoc.jar
        /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1-scaladoc.jar
        /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1-sources.jar
        /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1.jar
        bigtop-apache * master > 
        

        after we have jira for smoke test and puppet recipes, im ready to give a +1.

        This is a huge accomplishment thanks alot to mani.. and others for doing all this work on kafka. !

        Show
        jayunit100 jay vyas added a comment - - edited Awesome! One last thing: Can you help us craft jiras for the following tasks ? we need puppet recipes to setup and install kafka on the nodes. we need smoke tests for kafka. Can you help us spec out a JIRA for that Manikandan Narayanaswamy , Then im okay to commit .... test result of running bigtop-apache * master > rpm -qlp ./output/kafka/noarch/kafka-0.9.1-1.fc20.noarch.rpm | grep jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/jopt-simple-3.2.jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/log4j-1.2.15.jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/metrics-core-2.2.0.jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/scala-library-2.8.0.jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/slf4j-api-1.7.2.jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/snappy-java-1.0.5.jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/zkclient-0.3.jar /usr/lib/kafka/core/build/dependant-libs-2.8.0/zookeeper-3.3.4.jar /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1-javadoc.jar /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1-scaladoc.jar /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1-sources.jar /usr/lib/kafka/core/build/libs/kafka_2.8.0-0.8.1.1.jar bigtop-apache * master > after we have jira for smoke test and puppet recipes, im ready to give a +1. This is a huge accomplishment thanks alot to mani.. and others for doing all this work on kafka. !
        Hide
        rvs Roman Shaposhnik added a comment -

        Very much +1 on what jay vyas said: we need it to be deployable and smoke testable. Also, we need to figure out who's signing up for its long term support in Bigtop. Basically, MAINTAINERS.txt needs to be updated with a name.

        Show
        rvs Roman Shaposhnik added a comment - Very much +1 on what jay vyas said: we need it to be deployable and smoke testable. Also, we need to figure out who's signing up for its long term support in Bigtop. Basically, MAINTAINERS.txt needs to be updated with a name.
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Thanks guys. I've created two Jiras:

        BIGTOP-1623: Add smoke tests for Kafka
        BIGTOP-1624: Add puppet recipes for deploying Kafka.

        I haven't written puppet recipes before, but would be willing to pick that task up and get something out soon. Also, volunteer to be the maintainer for Kafka packaging.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Thanks guys. I've created two Jiras: BIGTOP-1623 : Add smoke tests for Kafka BIGTOP-1624 : Add puppet recipes for deploying Kafka. I haven't written puppet recipes before, but would be willing to pick that task up and get something out soon. Also, volunteer to be the maintainer for Kafka packaging.
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Olaf Flebbe, thanks for your comment. Yes, /var/lib/kafka/data seems more appropriate and I'll make that change.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Olaf Flebbe , thanks for your comment. Yes, /var/lib/kafka/data seems more appropriate and I'll make that change.
        Hide
        mgrover Mark Grover added a comment -

        Thanks Mani! This is looking great! I have a few more comments, my apologies, I missed them in the first run.

        1. do-component-build checks for presence of GIT_REPO and if it's set, creates a temporary tarball. I don't think that's how the current Bigtop build workflow works. We don't ever define GIT_REPO, so I'd suggest getting rid of the bottom else clause completely. Would you agree?
        2. I noticed that zookeeper-server is now a dependency of kafka-server and zookeeper is dependency of kafka package. I think this is much better than the previous patch. And, while I totally agree with the dependency of kafka on zookeeper I don't feel that the kafka-server needs to depend on zookeeper-server. The reason is that kafka just needs to find a zookeeper ensemble, for that you don't need to have the ensemble running on the same nodes as kafka. So, simply having a dependency of kafka on zookeeper (which enables it to connect to a zookeeper ensemble - whether on the same node or a different node), should be enough. If people want to run a zookeeper server on the same node, they will follow the zookeeper documentation to install, setup and run a zookeeper server on that node and end up install zookeeper-server package on it anyways. We don't have to install it automatically.
        3. I noticed that when we create the kafka user, we do:

        getent passwd kafka > /dev/null || useradd -c "kafka" -s /bin/bash -g kafka -d /var/lib/kafka kafka 2> /dev/null || :
        

        The long name here is 'kafka'. It's not a big deal, but historically, our convention has been to have long name starting with an upper case letter so that would make it 'Kafka'. See spark, hadoop and hive, for example.
        4. In the .mk file, I noticed:

        KAFKA_BASE_VERSION=0.8.1.1
        KAFKA_PKG_VERSION=0.9.1
        

        Is that intentional?

        And, this is a question than a suggestion:
        In line 125 of install_kafka.sh, we have:

        for file in kafka-console-consumer.sh kafka-console-producer.sh kafka-run-class.sh kafka-topics.sh
        

        That looks fragile in case new binaries get added to kafka's bin directory. Are there any .sh files in that directory that we don't want to create shell wrappers for? Is that why we are spelling them out?

        Show
        mgrover Mark Grover added a comment - Thanks Mani! This is looking great! I have a few more comments, my apologies, I missed them in the first run. 1. do-component-build checks for presence of GIT_REPO and if it's set, creates a temporary tarball. I don't think that's how the current Bigtop build workflow works. We don't ever define GIT_REPO, so I'd suggest getting rid of the bottom else clause completely. Would you agree? 2. I noticed that zookeeper-server is now a dependency of kafka-server and zookeeper is dependency of kafka package. I think this is much better than the previous patch. And, while I totally agree with the dependency of kafka on zookeeper I don't feel that the kafka-server needs to depend on zookeeper-server. The reason is that kafka just needs to find a zookeeper ensemble, for that you don't need to have the ensemble running on the same nodes as kafka. So, simply having a dependency of kafka on zookeeper (which enables it to connect to a zookeeper ensemble - whether on the same node or a different node), should be enough. If people want to run a zookeeper server on the same node, they will follow the zookeeper documentation to install, setup and run a zookeeper server on that node and end up install zookeeper-server package on it anyways. We don't have to install it automatically. 3. I noticed that when we create the kafka user, we do: getent passwd kafka > /dev/ null || useradd -c "kafka" -s /bin/bash -g kafka -d / var /lib/kafka kafka 2> /dev/ null || : The long name here is 'kafka'. It's not a big deal, but historically, our convention has been to have long name starting with an upper case letter so that would make it 'Kafka'. See spark , hadoop and hive , for example. 4. In the .mk file, I noticed: KAFKA_BASE_VERSION=0.8.1.1 KAFKA_PKG_VERSION=0.9.1 Is that intentional? And, this is a question than a suggestion: In line 125 of install_kafka.sh, we have: for file in kafka-console-consumer.sh kafka-console-producer.sh kafka-run-class.sh kafka-topics.sh That looks fragile in case new binaries get added to kafka's bin directory. Are there any .sh files in that directory that we don't want to create shell wrappers for? Is that why we are spelling them out?
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Thanks for taking time to review the patch. I've addressed all comments/suggestions of them with this patch, including the comment from Olaf.

        As for (4), Mark, there are sh files like kafka-producer-perf-test.sh, kafka-simple-consumer-perf-test.sh, kafka-simple-consumer-shell.sh, zookeeper-shell.sh, zookeeper-server-start.sh, zookeeper-server-stop.sh and a few others which I left out from including into /usr/bin. Maybe we can create an exclusion list and include everything else that is under kafka/bin this way new scripts will automatically be picked up by the packaging code to be placed under /usr/bin. I've created this JIRA to work on this potential issue. BIGTOP-1625.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Thanks for taking time to review the patch. I've addressed all comments/suggestions of them with this patch, including the comment from Olaf. As for (4), Mark, there are sh files like kafka-producer-perf-test.sh, kafka-simple-consumer-perf-test.sh, kafka-simple-consumer-shell.sh, zookeeper-shell.sh, zookeeper-server-start.sh, zookeeper-server-stop.sh and a few others which I left out from including into /usr/bin. Maybe we can create an exclusion list and include everything else that is under kafka/bin this way new scripts will automatically be picked up by the packaging code to be placed under /usr/bin. I've created this JIRA to work on this potential issue. BIGTOP-1625 .
        Hide
        warwithin YoungWoo Kim added a comment - - edited

        Manikandan Narayanaswamy Thanks for the patch!

        While Building an RPM with BIGTOP-989-6.patch, I got following errors:

        + /usr/lib/rpm/check-buildroot
        Processing files: kafka-0.8.1.1-1.el6.noarch
        오류: 파일을 찾을 수 없음: /root/bigtop/build/kafka/rpm/BUILDROOT/kafka-0.8.1.1-1.el6.x86_64/var/local/kafka
        
        
        RPM 제작 오류:
            파일을 찾을 수 없음: /root/bigtop/build/kafka/rpm/BUILDROOT/kafka-0.8.1.1-1.el6.x86_64/var/local/kafka
        :kafka-rpm FAILED
        
        FAILURE: Build failed with an exception.
        
        * Where:
        Script '/root/bigtop/packages.gradle' line: 383
        
        

        It seems "files" section includes "%

        {var_local_kafka}" but installation or create a directory "%{var_local_kafka}

        " is missing.

        After removing var_local_kafka from %files section, building an rpm works fine for me.

        Show
        warwithin YoungWoo Kim added a comment - - edited Manikandan Narayanaswamy Thanks for the patch! While Building an RPM with BIGTOP-989-6.patch , I got following errors: + /usr/lib/rpm/check-buildroot Processing files: kafka-0.8.1.1-1.el6.noarch 오류: 파일을 찾을 수 없음: /root/bigtop/build/kafka/rpm/BUILDROOT/kafka-0.8.1.1-1.el6.x86_64/var/local/kafka RPM 제작 오류: 파일을 찾을 수 없음: /root/bigtop/build/kafka/rpm/BUILDROOT/kafka-0.8.1.1-1.el6.x86_64/var/local/kafka :kafka-rpm FAILED FAILURE: Build failed with an exception. * Where: Script '/root/bigtop/packages.gradle' line: 383 It seems "files" section includes "% {var_local_kafka}" but installation or create a directory "%{var_local_kafka} " is missing. After removing var_local_kafka from %files section, building an rpm works fine for me.
        Hide
        jayunit100 jay vyas added a comment -

        Sounds like this is quite close. Thanks for the review YoungWoo Kim ...
        I'm okay to +1 once it builds, so longs as the MAINTAINERS.txt file is settled (and puppet+smoke tests are on the way).

        Show
        jayunit100 jay vyas added a comment - Sounds like this is quite close. Thanks for the review YoungWoo Kim ... I'm okay to +1 once it builds, so longs as the MAINTAINERS.txt file is settled (and puppet+smoke tests are on the way).
        Hide
        warwithin YoungWoo Kim added a comment -

        Manikandan Narayanaswamy] After install rpms, I've been testing basic functionality with quickstart guide:

        1) Producer

        # bin/kafka-topics.sh --create --zookeeper bigtop:2181 --replication-factor 1 --partitions 1 --topic test
        Created topic "test".
        # bin/kafka-topics.sh --list --zookeeper bigtop:2181
        test
        # bin/kafka-console-producer.sh --broker-list bigtop:9092 --topic test
        SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
        SLF4J: Defaulting to no-operation (NOP) logger implementation
        SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
        1
        2
        3
        

        2) Consumer:

        # bin/kafka-console-consumer.sh --zookeeper bigtop:2181 --topic test --from-beginning
        SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
        SLF4J: Defaulting to no-operation (NOP) logger implementation
        SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
        1
        2
        3
        

        So far, It works fine for me.

        Show
        warwithin YoungWoo Kim added a comment - Manikandan Narayanaswamy ] After install rpms, I've been testing basic functionality with quickstart guide: 1) Producer # bin/kafka-topics.sh --create --zookeeper bigtop:2181 --replication-factor 1 --partitions 1 --topic test Created topic "test". # bin/kafka-topics.sh --list --zookeeper bigtop:2181 test # bin/kafka-console-producer.sh --broker-list bigtop:9092 --topic test SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 1 2 3 2) Consumer: # bin/kafka-console-consumer.sh --zookeeper bigtop:2181 --topic test --from-beginning SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 1 2 3 So far, It works fine for me.
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Thanks for the validation YoungWoo Kim. I've submitted a new patch with the fix. It looks like this was introduced in patch6.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Thanks for the validation YoungWoo Kim . I've submitted a new patch with the fix. It looks like this was introduced in patch6.
        Hide
        warwithin YoungWoo Kim added a comment - - edited

        Manikandan Narayanaswamy I found a minor issue from your patch.

        "/usr/lib/kafka" includes following files and dirs:

        12 -rwxr-xr-x.  1 kafka kafka 11358 2015-02-24 11:28 LICENSE
         4 -rwxr-xr-x.  1 kafka kafka   162 2015-02-24 11:28 NOTICE
         4 drwxr-xr-x.  2 root  root   4096 2015-02-24 15:00 bin
         0 lrwxrwxrwx.  1 kafka kafka    15 2015-02-24 11:35 config -> /etc/kafka/conf
         4 drwxr-xr-x.  3 kafka kafka  4096 2015-02-24 11:35 core
         4 -rwxr-xr-x.  1 kafka kafka   744 2015-02-24 11:28 examples
         4 drwxr-xr-x.  2 kafka kafka  4096 2015-02-24 13:24 logs
         4 drwxr-xr-x.  3 kafka kafka  4096 2015-02-24 11:35 perf
        

        But, It's way different from binary distro. We should have only '

        {bin,libs,config,logs}

        ' at /usr/lib/kafka.

        From "do-component-build":

        cp core/build/distributions/kafka_*.tgz build/`basename core/build/distributions/kafka* .tgz`.tar.gz
        

        The build script make a binary distribution. but,

        +# Copy files to the bin and other directories
        +rsync --exclude="*.cmd" ${BUILD_DIR}/bin/* $PREFIX/$LIB_DIR/bin/
        +rsync -r --exclude={tmp,classes,src} ${BUILD_DIR}/core/* $PREFIX/$LIB_DIR/core
        +rsync -r --exclude={tmp,classes,src} ${BUILD_DIR}/perf/* $PREFIX/$LIB_DIR/perf
        +rsync -r --exclude={tmp,classes,src} ${BUILD_DIR}/clients/* $PREFIX/$LIB_DIR/clients
        +rsync -r --exclude={tmp,classes,src,bin} ${BUILD_DIR}/examples/* $PREFIX/$LIB_DIR/examples
        

        "install_kafka.sh" copy files and dirs from BUILD_DIR instead of extracting distro tar.gz.

        Manikandan Narayanaswamy If you revise the patch, I'll keep on testing. Thanks!

        Show
        warwithin YoungWoo Kim added a comment - - edited Manikandan Narayanaswamy I found a minor issue from your patch. "/usr/lib/kafka" includes following files and dirs: 12 -rwxr-xr-x. 1 kafka kafka 11358 2015-02-24 11:28 LICENSE 4 -rwxr-xr-x. 1 kafka kafka 162 2015-02-24 11:28 NOTICE 4 drwxr-xr-x. 2 root root 4096 2015-02-24 15:00 bin 0 lrwxrwxrwx. 1 kafka kafka 15 2015-02-24 11:35 config -> /etc/kafka/conf 4 drwxr-xr-x. 3 kafka kafka 4096 2015-02-24 11:35 core 4 -rwxr-xr-x. 1 kafka kafka 744 2015-02-24 11:28 examples 4 drwxr-xr-x. 2 kafka kafka 4096 2015-02-24 13:24 logs 4 drwxr-xr-x. 3 kafka kafka 4096 2015-02-24 11:35 perf But, It's way different from binary distro. We should have only ' {bin,libs,config,logs} ' at /usr/lib/kafka. From "do-component-build": cp core/build/distributions/kafka_*.tgz build/`basename core/build/distributions/kafka* .tgz`.tar.gz The build script make a binary distribution. but, +# Copy files to the bin and other directories +rsync --exclude="*.cmd" ${BUILD_DIR}/bin/* $PREFIX/$LIB_DIR/bin/ +rsync -r --exclude={tmp,classes,src} ${BUILD_DIR}/core/* $PREFIX/$LIB_DIR/core +rsync -r --exclude={tmp,classes,src} ${BUILD_DIR}/perf/* $PREFIX/$LIB_DIR/perf +rsync -r --exclude={tmp,classes,src} ${BUILD_DIR}/clients/* $PREFIX/$LIB_DIR/clients +rsync -r --exclude={tmp,classes,src,bin} ${BUILD_DIR}/examples/* $PREFIX/$LIB_DIR/examples "install_kafka.sh" copy files and dirs from BUILD_DIR instead of extracting distro tar.gz. Manikandan Narayanaswamy If you revise the patch, I'll keep on testing. Thanks!
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Hi YoungWoo Kim, thanks for testing the package!

        Yes, gradle build does generate the binary tarball. But, I found that it dumps all the jars under the libs folder. I thought it would be much cleaner if each of these jars would reside in appropriate folders. Note that kafka-run-class.sh does in fact specifically add

        {examples,clients,core}

        to the classpath.

        But, as you said, to conform to packaging standards, I'll update the patch. Just wondering if that can come in as a fix after the code is submitted as functionality-wise it seems to be working as expected.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Hi YoungWoo Kim , thanks for testing the package! Yes, gradle build does generate the binary tarball. But, I found that it dumps all the jars under the libs folder. I thought it would be much cleaner if each of these jars would reside in appropriate folders. Note that kafka-run-class.sh does in fact specifically add {examples,clients,core} to the classpath. But, as you said, to conform to packaging standards, I'll update the patch. Just wondering if that can come in as a fix after the code is submitted as functionality-wise it seems to be working as expected.
        Hide
        warwithin YoungWoo Kim added a comment - - edited

        Manikandan Narayanaswamy "jars in libs" should work. See https://github.com/apache/kafka/blob/0.8.1/bin/kafka-run-class.sh#L66

        bin scripts from Kafka binary distribution work fine on its own distribution To save your time, I added some bits based on your patch, https://github.com/youngwookim/bigtop/commit/39900aa683748abd25fcd4f9d51dd6c8c75a2785 Please look into the changes.

        Show
        warwithin YoungWoo Kim added a comment - - edited Manikandan Narayanaswamy "jars in libs" should work. See https://github.com/apache/kafka/blob/0.8.1/bin/kafka-run-class.sh#L66 bin scripts from Kafka binary distribution work fine on its own distribution To save your time, I added some bits based on your patch, https://github.com/youngwookim/bigtop/commit/39900aa683748abd25fcd4f9d51dd6c8c75a2785 Please look into the changes.
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Updating structure of the package. Now, /usr/lib/kafka only contains:

        kafka kafka  4096 Feb 24 21:35 bin
        kafka kafka    15 Feb 24 21:35 config -> /etc/kafka/conf
        kafka kafka  4096 Feb 24 21:35 libs
        kafka kafka 11358 Feb 24 21:33 LICENSE
        kafka kafka  4096 Feb 24 21:35 logs
        kafka kafka   162 Feb 24 21:33 NOTICE
        
        Show
        mnarayan Manikandan Narayanaswamy added a comment - Updating structure of the package. Now, /usr/lib/kafka only contains: kafka kafka 4096 Feb 24 21:35 bin kafka kafka 15 Feb 24 21:35 config -> /etc/kafka/conf kafka kafka 4096 Feb 24 21:35 libs kafka kafka 11358 Feb 24 21:33 LICENSE kafka kafka 4096 Feb 24 21:35 logs kafka kafka 162 Feb 24 21:33 NOTICE
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        YoungWoo Kim, thanks again for your feedback. I've updated the patch and hopefully this should do it.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - YoungWoo Kim , thanks again for your feedback. I've updated the patch and hopefully this should do it.
        Hide
        oflebbe Olaf Flebbe added a comment -

        Manikandan Narayanaswamy : Could you please move logs to /var/log/kafka , since /usr/lib may not be on a local disk ? A symlink will do if not configurable.

        Thanx!

        Show
        oflebbe Olaf Flebbe added a comment - Manikandan Narayanaswamy : Could you please move logs to /var/log/kafka , since /usr/lib may not be on a local disk ? A symlink will do if not configurable. Thanx!
        Hide
        warwithin YoungWoo Kim added a comment -

        Manikandan Narayanaswamy Thanks for updating patch!
        A few comments, From the package:
        1) '/usr/lib/kafka/bin/windows' should be removed.
        2) '/usr/lib/kafka/libs/zookeeper-3.3.4.jar' should be removed and symliked with /usr/lib/zookeeper/zookeeper.jar

        Show
        warwithin YoungWoo Kim added a comment - Manikandan Narayanaswamy Thanks for updating patch! A few comments, From the package: 1) '/usr/lib/kafka/bin/windows' should be removed. 2) '/usr/lib/kafka/libs/zookeeper-3.3.4.jar' should be removed and symliked with /usr/lib/zookeeper/zookeeper.jar
        Hide
        warwithin YoungWoo Kim added a comment -

        In addition, Scala version from Bigtop toolchain is 2.10.x. See https://github.com/apache/bigtop/blob/master/bigtop_toolchain/manifests/scala.pp

        How about specify Scala version at do-component-build? like below:

        SCALA_VERSION=2.10.0
        
        ./gradlew -PscalaVersion=${SCALA_VERSION} clean releaseTarGz -x signArchives
        

        The default Scala version for Kafka's build profile is 2.8.0.

        Show
        warwithin YoungWoo Kim added a comment - In addition, Scala version from Bigtop toolchain is 2.10.x. See https://github.com/apache/bigtop/blob/master/bigtop_toolchain/manifests/scala.pp How about specify Scala version at do-component-build? like below: SCALA_VERSION=2.10.0 ./gradlew -PscalaVersion=${SCALA_VERSION} clean releaseTarGz -x signArchives The default Scala version for Kafka's build profile is 2.8.0.
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Addressed comments:

        • Removed zookeeper jar from under libs and replaced that with a symlink
        • Removing windows from under bin directory
        • Created symlink for logs dir pointing to /var/log/kafka
        • Adding compiler version while building kafka (set to 2.10.0)

        Thanks much for all the feedback!

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Addressed comments: Removed zookeeper jar from under libs and replaced that with a symlink Removing windows from under bin directory Created symlink for logs dir pointing to /var/log/kafka Adding compiler version while building kafka (set to 2.10.0) Thanks much for all the feedback!
        Hide
        warwithin YoungWoo Kim added a comment -

        Manikandan Narayanaswamy Packaging rpm works fine. I do not test with complex examples but basic functionality looks good to me. Thanks!

        Ping! Olaf Flebbe jay vyas

        Show
        warwithin YoungWoo Kim added a comment - Manikandan Narayanaswamy Packaging rpm works fine. I do not test with complex examples but basic functionality looks good to me. Thanks! Ping! Olaf Flebbe jay vyas
        Hide
        jayunit100 jay vyas added a comment -

        hey guys. i just saw this ! testing it now

        Show
        jayunit100 jay vyas added a comment - hey guys. i just saw this ! testing it now
        Hide
        jayunit100 jay vyas added a comment -

        great, build succeeded

        • From my end, I think i better do some more testing before commiting. This is awesome.
        • who are going to be the MAINTAINERS for kafka going to be ? I will update them before commiting this .

        Thanks!

        Show
        jayunit100 jay vyas added a comment - great, build succeeded From my end, I think i better do some more testing before commiting. This is awesome. who are going to be the MAINTAINERS for kafka going to be ? I will update them before commiting this . Thanks!
        Hide
        evans_ye Evans Ye added a comment -

        Quote what Manikandan Narayanaswamy said on 27/Jan:

        I haven't written puppet recipes before, but would be willing to pick that task up and get something out soon. Also, volunteer to be the maintainer for Kafka packaging.

        I think MAINTAINER is not a problem now

        Show
        evans_ye Evans Ye added a comment - Quote what Manikandan Narayanaswamy said on 27/Jan: I haven't written puppet recipes before, but would be willing to pick that task up and get something out soon. Also, volunteer to be the maintainer for Kafka packaging. I think MAINTAINER is not a problem now
        Hide
        mnarayan Manikandan Narayanaswamy added a comment -

        Sure, I volunteer.

        Show
        mnarayan Manikandan Narayanaswamy added a comment - Sure, I volunteer.
        Hide
        oflebbe Olaf Flebbe added a comment -

        I tried to start the kafka-server on debian. It did not register in systemd with debian 8 . Had no time to dig deeper.

        Show
        oflebbe Olaf Flebbe added a comment - I tried to start the kafka-server on debian. It did not register in systemd with debian 8 . Had no time to dig deeper.
        Hide
        oflebbe Olaf Flebbe added a comment -

        And btw. the "rules" file should be executable.

        Show
        oflebbe Olaf Flebbe added a comment - And btw. the "rules" file should be executable.
        Hide
        cos Konstantin Boudnik added a comment -

        That'd be pretty nasty, IMO as every time we upgrade the Scala we'll have to remember to update this component build file. Any other way we can convey the info to the build? All component build do read bigtop.bom file that has all the versions in the stack. Would it help?

        Show
        cos Konstantin Boudnik added a comment - That'd be pretty nasty, IMO as every time we upgrade the Scala we'll have to remember to update this component build file. Any other way we can convey the info to the build? All component build do read bigtop.bom file that has all the versions in the stack. Would it help?
        Hide
        cos Konstantin Boudnik added a comment -

        Technically speaking Debian8 isn't a supported platform for 0.9.0

        Show
        cos Konstantin Boudnik added a comment - Technically speaking Debian8 isn't a supported platform for 0.9.0
        Hide
        warwithin YoungWoo Kim added a comment -

        I'm +1 for SCALA_VERSION on bigtop.bom such as JDK_VERSION.

        Show
        warwithin YoungWoo Kim added a comment - I'm +1 for SCALA_VERSION on bigtop.bom such as JDK_VERSION.
        Hide
        jayunit100 jay vyas added a comment -
        • Lets fix the "rules" file, as Olaf suggests.
        • Please create a JIRA to address fixing the Debian issues.
          At that point unless other objections, im okay to commit this as a first iteration unless objections from others?
        Show
        jayunit100 jay vyas added a comment - Lets fix the "rules" file, as Olaf suggests. Please create a JIRA to address fixing the Debian issues. At that point unless other objections, im okay to commit this as a first iteration unless objections from others?
        Hide
        mgrover Mark Grover added a comment -

        Yeah, I completely agree with Jay and Cos.

        I had reviewed this earlier and took another look. This looks great to me. Any other changes people think that are blocking this from going in?

        Show
        mgrover Mark Grover added a comment - Yeah, I completely agree with Jay and Cos. I had reviewed this earlier and took another look. This looks great to me. Any other changes people think that are blocking this from going in?
        Hide
        oflebbe Olaf Flebbe added a comment -

        Package looks fine to me, my only point is that kafka-server does not start on debian.
        I am busy the next few days, doubt that I can find the root cause in the remaining hours left.
        Fine for me to have an JIRA with this separate issue to be fixed.

        Manikandan Narayanaswamy thanx for your work and patience...

        Show
        oflebbe Olaf Flebbe added a comment - Package looks fine to me, my only point is that kafka-server does not start on debian. I am busy the next few days, doubt that I can find the root cause in the remaining hours left. Fine for me to have an JIRA with this separate issue to be fixed. Manikandan Narayanaswamy thanx for your work and patience...
        Hide
        oflebbe Olaf Flebbe added a comment -

        Technically speaking kafka-server does not start on a systemd powered debian package.

        I volunteered to support Debian8 and volunteered to fix the CI. What else can I do to get a "supported" brand?

        Show
        oflebbe Olaf Flebbe added a comment - Technically speaking kafka-server does not start on a systemd powered debian package. I volunteered to support Debian8 and volunteered to fix the CI. What else can I do to get a "supported" brand?
        Hide
        oflebbe Olaf Flebbe added a comment -

        Technically speaking kafka-server does not start on a systemd powered debian package.

        I volunteered to support Debian8 and volunteered to fix the CI. What else can I do to get a "supported" brand?

        Show
        oflebbe Olaf Flebbe added a comment - Technically speaking kafka-server does not start on a systemd powered debian package. I volunteered to support Debian8 and volunteered to fix the CI. What else can I do to get a "supported" brand?
        Hide
        cos Konstantin Boudnik added a comment -

        Shall we commit this then and make a new JIRA to add support of Debian8?

        Show
        cos Konstantin Boudnik added a comment - Shall we commit this then and make a new JIRA to add support of Debian8?
        Hide
        mgrover Mark Grover added a comment -

        +1 (to what Cos said) and +1 (to the patch)

        Show
        mgrover Mark Grover added a comment - +1 (to what Cos said) and +1 (to the patch)
        Hide
        mgrover Mark Grover added a comment -

        I can do the honors this afternoon of committing this unless someone wants to do it sooner.

        Show
        mgrover Mark Grover added a comment - I can do the honors this afternoon of committing this unless someone wants to do it sooner.
        Hide
        cos Konstantin Boudnik added a comment -

        You're +2 then (if the math works as it used to be

        Show
        cos Konstantin Boudnik added a comment - You're +2 then (if the math works as it used to be
        Hide
        jayunit100 jay vyas added a comment -

        great. its settled one of us will commit this shortly ! Manikandan Narayanaswamy we will count on you to create these follow on JIRAs and make kafka a first class citizen thanks!

        Show
        jayunit100 jay vyas added a comment - great. its settled one of us will commit this shortly ! Manikandan Narayanaswamy we will count on you to create these follow on JIRAs and make kafka a first class citizen thanks!
        Hide
        mgrover Mark Grover added a comment -

        Committed. Thanks Mani!

        Show
        mgrover Mark Grover added a comment - Committed. Thanks Mani!
        Hide
        cos Konstantin Boudnik added a comment -

        Can anyone with project admin perms make sure that the ticket is assigned to the correct contributor? Thanks!

        Show
        cos Konstantin Boudnik added a comment - Can anyone with project admin perms make sure that the ticket is assigned to the correct contributor? Thanks!
        Hide
        evans_ye Evans Ye added a comment - - edited

        Manikandan Narayanaswamy Are you still OK to be a maintainer of Kafka component? If so I'll add you into the bigtop maintainer list. It's OK if you'd like to spin your focus. Just let us know.

        Show
        evans_ye Evans Ye added a comment - - edited Manikandan Narayanaswamy Are you still OK to be a maintainer of Kafka component? If so I'll add you into the bigtop maintainer list . It's OK if you'd like to spin your focus. Just let us know.

          People

          • Assignee:
            mnarayan Manikandan Narayanaswamy
            Reporter:
            diederik Diederik van Liere
          • Votes:
            1 Vote for this issue
            Watchers:
            15 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development