Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 47148D39E for ; Mon, 6 Aug 2012 21:21:03 +0000 (UTC) Received: (qmail 36346 invoked by uid 500); 6 Aug 2012 21:21:03 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 36140 invoked by uid 500); 6 Aug 2012 21:21:02 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 35864 invoked by uid 99); 6 Aug 2012 21:21:02 -0000 Received: from issues-vm.apache.org (HELO issues-vm) (140.211.11.160) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Aug 2012 21:21:02 +0000 Received: from isssues-vm.apache.org (localhost [127.0.0.1]) by issues-vm (Postfix) with ESMTP id 96DD014284D for ; Mon, 6 Aug 2012 21:21:02 +0000 (UTC) Date: Mon, 6 Aug 2012 21:21:02 +0000 (UTC) From: "David Semeria (JIRA)" To: commits@cassandra.apache.org Message-ID: <266354487.18459.1344288062620.JavaMail.jiratomcat@issues-vm> Subject: [jira] [Created] (CASSANDRA-4496) NPE on creating secondary index from Hector MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 David Semeria created CASSANDRA-4496: ---------------------------------------- Summary: NPE on creating secondary index from Hector Key: CASSANDRA-4496 URL: https://issues.apache.org/jira/browse/CASSANDRA-4496 Project: Cassandra Issue Type: Bug Components: Core Affects Versions: 1.1.3, 1.1.2 Environment: Ubuntu 12.4=20 Linux 3.2.0-27-generic #43-Ubuntu SMP Fri Jul 6 14:25:57 UTC 2012 x86_64 x8= 6_64 x86_64 GNU/Linux java version "1.7.0" Java(TM) SE Runtime Environment (build 1.7.0-b147) Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode) Reporter: David Semeria The following code has been working fine up to and including 1.0.x public static String createIndexedColumnFamily(String cf){ =20 Cluster cluster =3D HectorConfig.cluster; ComparatorType ctName =3D ComparatorType.getByClassName(JNameComparator= .class.getName()); =20 try{ cluster.dropColumnFamily(HectorConfig.dfltKeyspaceName, cf ); } catch (Exception e){} =20 List cdL =3D new ArrayList(); BasicColumnDefinition cd; =20 cd =3D new BasicColumnDefinition(); cd.setName(ss.toByteBuffer("id")); cd.setIndexName("id"); cd.setIndexType(ColumnIndexType.KEYS); cd.setValidationClass(JValueComparator.class.getName()); cdL.add(cd); } } With 1.1.3, cassandra throws the following error: david@vlap1:~/opt/cassandra$ sudo bin/cassandra -f xss =3D -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+UseThr= eadPriorities -XX:ThreadPriorityPolicy=3D42 -Xms128M -Xmx128M -Xmn32M -XX:+= HeapDumpOnOutOfMemoryError -Xss160k INFO 23:15:31,333 Logging initialized INFO 23:15:31,337 JVM vendor/version: Java HotSpot(TM) 64-Bit Server VM/1.= 7.0 INFO 23:15:31,338 Heap size: 130875392/130875392 INFO 23:15:31,338 Classpath: /etc/cassandra:/usr/share/cassandra/lib/antlr= -3.2.jar:/usr/share/cassandra/lib/avro-1.4.0-fixes.jar:/usr/share/cassandra= /lib/avro-1.4.0-sources-fixes.jar:/usr/share/cassandra/lib/commons-cli-1.1.= jar:/usr/share/cassandra/lib/commons-codec-1.2.jar:/usr/share/cassandra/lib= /commons-lang-2.4.jar:/usr/share/cassandra/lib/compress-lzf-0.8.4.jar:/usr/= share/cassandra/lib/concurrentlinkedhashmap-lru-1.3.jar:/usr/share/cassandr= a/lib/guava-r08.jar:/usr/share/cassandra/lib/hector-core-1.0-3.jar:/usr/sha= re/cassandra/lib/high-scale-lib-1.1.2.jar:/usr/share/cassandra/lib/jackson-= core-asl-1.9.2.jar:/usr/share/cassandra/lib/jackson-mapper-asl-1.9.2.jar:/u= sr/share/cassandra/lib/jamm-0.2.5.jar:/usr/share/cassandra/lib/jellyfish.ja= r:/usr/share/cassandra/lib/jline-0.9.94.jar:/usr/share/cassandra/lib/json-s= imple-1.1.jar:/usr/share/cassandra/lib/libthrift-0.7.0.jar:/usr/share/cassa= ndra/lib/log4j-1.2.16.jar:/usr/share/cassandra/lib/metrics-core-2.0.3.jar:/= usr/share/cassandra/lib/servlet-api-2.5-20081211.jar:/usr/share/cassandra/l= ib/slf4j-api-1.6.1.jar:/usr/share/cassandra/lib/slf4j-log4j12-1.6.1.jar:/us= r/share/cassandra/lib/snakeyaml-1.6.jar:/usr/share/cassandra/lib/snappy-jav= a-1.0.4.1.jar:/usr/share/cassandra/lib/snaptree-0.1.jar:/usr/share/cassandr= a/apache-cassandra-1.1.2.jar:/usr/share/cassandra/apache-cassandra-thrift-1= .1.2.jar:/usr/share/cassandra/apache-cassandra.jar:/usr/share/cassandra/str= ess.jar:/usr/share/cassandra/lib/jamm-0.2.5.jar INFO 23:15:31,340 JNA not found. Native methods will be disabled. INFO 23:15:31,351 Loading settings from file:/etc/cassandra/cassandra.yaml INFO 23:15:31,566 DiskAccessMode 'auto' determined to be mmap, indexAccess= Mode is mmap INFO 23:15:31,875 Global memtable threshold is enabled at 41MB INFO 23:15:32,380 Initializing key cache with capacity of 6 MBs. INFO 23:15:32,394 Scheduling key cache save to each 14400 seconds (going t= o save all keys). INFO 23:15:32,395 Initializing row cache with capacity of 0 MBs and provid= er org.apache.cassandra.cache.SerializingCacheProvider INFO 23:15:32,400 Scheduling row cache save to each 0 seconds (going to sa= ve all keys). INFO 23:15:32,661 Couldn't detect any schema definitions in local storage. INFO 23:15:32,665 Found table data in data directories. Consider using the= CLI to define your schema. INFO 23:15:32,714 No commitlog files found; skipping replay INFO 23:15:32,740 Cassandra version: 1.1.2 INFO 23:15:32,754 Thrift API version: 19.32.0 INFO 23:15:32,763 CQL supported versions: 2.0.0,3.0.0-beta1 (default: 2.0.= 0) INFO 23:15:32,803 Loading persisted ring state INFO 23:15:32,807 Starting up server gossip INFO 23:15:32,821 Enqueuing flush of Memtable-LocationInfo@1473831778(163/= 203 serialized/live bytes, 3 ops) INFO 23:15:32,822 Writing Memtable-LocationInfo@1473831778(163/203 seriali= zed/live bytes, 3 ops) INFO 23:15:33,072 Completed flushing /var/lib/cassandra/data/system/Locati= onInfo/system-LocationInfo-hd-1-Data.db (235 bytes) for commitlog position = ReplayPosition(segmentId=3D126105713813993, position=3D587) INFO 23:15:33,094 Starting Messaging Service on port 7000 INFO 23:15:33,102 This node will not auto bootstrap because it is configur= ed to be a seed node. WARN 23:15:33,112 Generated random token 739327900735806466730585277164028= 32414. Random tokens will result in an unbalanced ring; see http://wiki.apa= che.org/cassandra/Operations INFO 23:15:33,160 Enqueuing flush of Memtable-LocationInfo@248801290(77/96= serialized/live bytes, 2 ops) INFO 23:15:33,161 Writing Memtable-LocationInfo@248801290(77/96 serialized= /live bytes, 2 ops) INFO 23:15:33,364 Completed flushing /var/lib/cassandra/data/system/Locati= onInfo/system-LocationInfo-hd-2-Data.db (163 bytes) for commitlog position = ReplayPosition(segmentId=3D126105713813993, position=3D768) INFO 23:15:33,366 Node vlap1/127.0.1.1 state jump to normal INFO 23:15:33,367 Bootstrap/Replace/Move completed! Now serving reads. INFO 23:15:33,368 Will not load MX4J, mx4j-tools.jar is not in the classpa= th INFO 23:15:33,408 Binding thrift service to vlap1/127.0.1.1:9160 INFO 23:15:33,429 Using TFastFramedTransport with a max frame size of 1572= 8640 bytes. INFO 23:15:33,432 Using synchronous/threadpool thrift server on vlap1/127.= 0.1.1 : 9160 INFO 23:15:33,433 Listening for thrift clients... INFO 23:16:16,665 Enqueuing flush of Memtable-schema_keyspaces@1373026871(= 199/248 serialized/live bytes, 4 ops) INFO 23:16:16,665 Writing Memtable-schema_keyspaces@1373026871(199/248 ser= ialized/live bytes, 4 ops) INFO 23:16:16,944 Completed flushing /var/lib/cassandra/data/system/schema= _keyspaces/system-schema_keyspaces-hd-1-Data.db (246 bytes) for commitlog p= osition ReplayPosition(segmentId=3D126105713813993, position=3D1023) INFO 23:16:33,592 Enqueuing flush of Memtable-schema_columnfamilies@341129= 413(1202/1502 serialized/live bytes, 20 ops) INFO 23:16:33,592 Writing Memtable-schema_columnfamilies@341129413(1202/15= 02 serialized/live bytes, 20 ops) INFO 23:16:33,900 Completed flushing /var/lib/cassandra/data/system/schema= _columnfamilies/system-schema_columnfamilies-hd-1-Data.db (1257 bytes) for = commitlog position ReplayPosition(segmentId=3D126105713813993, position=3D2= 577) INFO 23:16:33,900 Enqueuing flush of Memtable-schema_columns@43094749(283/= 353 serialized/live bytes, 5 ops) INFO 23:16:33,901 Writing Memtable-schema_columns@43094749(283/353 seriali= zed/live bytes, 5 ops) INFO 23:16:34,101 Completed flushing /var/lib/cassandra/data/system/schema= _columns/system-schema_columns-hd-1-Data.db (330 bytes) for commitlog posit= ion ReplayPosition(segmentId=3D126105713813993, position=3D2577) ERROR 23:16:34,132 Error occurred during processing of message. java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.l= ang.NullPointerException =09at org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:= 373) =09at org.apache.cassandra.service.MigrationManager.announce(MigrationManag= er.java:188) =09at org.apache.cassandra.service.MigrationManager.announceNewColumnFamily= (MigrationManager.java:139) =09at org.apache.cassandra.thrift.CassandraServer.system_add_column_family(= CassandraServer.java:926) =09at org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_fam= ily.getResult(Cassandra.java:3410) =09at org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_fam= ily.getResult(Cassandra.java:3398) =09at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32) =09at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34) =09at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run= (CustomTThreadPoolServer.java:186) =09at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.= java:1110) =09at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor= .java:603) =09at java.lang.Thread.run(Thread.java:722) Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerEx= ception =09at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) =09at java.util.concurrent.FutureTask.get(FutureTask.java:111) =09at org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:= 369) =09... 11 more Caused by: java.lang.NullPointerException =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 167) =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 124) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.getString(JdbcUTF8.java:77) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.compose(JdbcUTF8.java:97) =09at org.apache.cassandra.db.marshal.UTF8Type.compose(UTF8Type.java:35) =09at org.apache.cassandra.cql3.UntypedResultSet$Row.getString(UntypedResul= tSet.java:87) =09at org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinit= ion.java:256) =09at org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMe= taData.java:1293) =09at org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:122= 5) =09at org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMe= taData.java:294) =09at org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:= 359) =09at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:271) =09at org.apache.cassandra.service.MigrationManager$1.call(MigrationManager= .java:211) =09at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) =09at java.util.concurrent.FutureTask.run(FutureTask.java:166) =09... 3 more ERROR 23:16:34,140 Exception in thread Thread[MigrationStage:1,5,main] java.lang.NullPointerException =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 167) =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 124) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.getString(JdbcUTF8.java:77) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.compose(JdbcUTF8.java:97) =09at org.apache.cassandra.db.marshal.UTF8Type.compose(UTF8Type.java:35) =09at org.apache.cassandra.cql3.UntypedResultSet$Row.getString(UntypedResul= tSet.java:87) =09at org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinit= ion.java:256) =09at org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMe= taData.java:1293) =09at org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:122= 5) =09at org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMe= taData.java:294) =09at org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:= 359) =09at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:271) =09at org.apache.cassandra.service.MigrationManager$1.call(MigrationManager= .java:211) =09at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) =09at java.util.concurrent.FutureTask.run(FutureTask.java:166) =09at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.= java:1110) =09at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor= .java:603) =09at java.lang.Thread.run(Thread.java:722) Upon a restart of the server another NPE is thrown: david@vlap1:~/opt/cassandra$ sudo bin/cassandra -f xss =3D -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+UseThr= eadPriorities -XX:ThreadPriorityPolicy=3D42 -Xms128M -Xmx128M -Xmn32M -XX:+= HeapDumpOnOutOfMemoryError -Xss160k INFO 23:17:51,158 Logging initialized INFO 23:17:51,163 JVM vendor/version: Java HotSpot(TM) 64-Bit Server VM/1.= 7.0 INFO 23:17:51,163 Heap size: 130875392/130875392 INFO 23:17:51,163 Classpath: /etc/cassandra:/usr/share/cassandra/lib/antlr= -3.2.jar:/usr/share/cassandra/lib/avro-1.4.0-fixes.jar:/usr/share/cassandra= /lib/avro-1.4.0-sources-fixes.jar:/usr/share/cassandra/lib/commons-cli-1.1.= jar:/usr/share/cassandra/lib/commons-codec-1.2.jar:/usr/share/cassandra/lib= /commons-lang-2.4.jar:/usr/share/cassandra/lib/compress-lzf-0.8.4.jar:/usr/= share/cassandra/lib/concurrentlinkedhashmap-lru-1.3.jar:/usr/share/cassandr= a/lib/guava-r08.jar:/usr/share/cassandra/lib/hector-core-1.0-3.jar:/usr/sha= re/cassandra/lib/high-scale-lib-1.1.2.jar:/usr/share/cassandra/lib/jackson-= core-asl-1.9.2.jar:/usr/share/cassandra/lib/jackson-mapper-asl-1.9.2.jar:/u= sr/share/cassandra/lib/jamm-0.2.5.jar:/usr/share/cassandra/lib/jellyfish.ja= r:/usr/share/cassandra/lib/jline-0.9.94.jar:/usr/share/cassandra/lib/json-s= imple-1.1.jar:/usr/share/cassandra/lib/libthrift-0.7.0.jar:/usr/share/cassa= ndra/lib/log4j-1.2.16.jar:/usr/share/cassandra/lib/metrics-core-2.0.3.jar:/= usr/share/cassandra/lib/servlet-api-2.5-20081211.jar:/usr/share/cassandra/l= ib/slf4j-api-1.6.1.jar:/usr/share/cassandra/lib/slf4j-log4j12-1.6.1.jar:/us= r/share/cassandra/lib/snakeyaml-1.6.jar:/usr/share/cassandra/lib/snappy-jav= a-1.0.4.1.jar:/usr/share/cassandra/lib/snaptree-0.1.jar:/usr/share/cassandr= a/apache-cassandra-1.1.2.jar:/usr/share/cassandra/apache-cassandra-thrift-1= .1.2.jar:/usr/share/cassandra/apache-cassandra.jar:/usr/share/cassandra/str= ess.jar:/usr/share/cassandra/lib/jamm-0.2.5.jar INFO 23:17:51,165 JNA not found. Native methods will be disabled. INFO 23:17:51,187 Loading settings from file:/etc/cassandra/cassandra.yaml INFO 23:17:51,416 DiskAccessMode 'auto' determined to be mmap, indexAccess= Mode is mmap INFO 23:17:51,713 Global memtable threshold is enabled at 41MB INFO 23:17:52,131 Initializing key cache with capacity of 6 MBs. INFO 23:17:52,142 Scheduling key cache save to each 14400 seconds (going t= o save all keys). INFO 23:17:52,143 Initializing row cache with capacity of 0 MBs and provid= er org.apache.cassandra.cache.SerializingCacheProvider INFO 23:17:52,148 Scheduling row cache save to each 0 seconds (going to sa= ve all keys). INFO 23:17:52,239 Opening /var/lib/cassandra/data/system/schema_columnfami= lies/system-schema_columnfamilies-hd-1 (1257 bytes) INFO 23:17:52,272 Opening /var/lib/cassandra/data/system/schema_columns/sy= stem-schema_columns-hd-1 (330 bytes) INFO 23:17:52,287 Opening /var/lib/cassandra/data/system/schema_keyspaces/= system-schema_keyspaces-hd-1 (246 bytes) INFO 23:17:52,291 Opening /var/lib/cassandra/data/system/LocationInfo/syst= em-LocationInfo-hd-2 (163 bytes) INFO 23:17:52,297 Opening /var/lib/cassandra/data/system/LocationInfo/syst= em-LocationInfo-hd-1 (235 bytes) ERROR 23:17:52,500 Exception encountered during startup java.lang.NullPointerException =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 167) =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 124) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.getString(JdbcUTF8.java:77) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.compose(JdbcUTF8.java:97) =09at org.apache.cassandra.db.marshal.UTF8Type.compose(UTF8Type.java:35) =09at org.apache.cassandra.cql3.UntypedResultSet$Row.getString(UntypedResul= tSet.java:87) =09at org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinit= ion.java:256) =09at org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMe= taData.java:1293) =09at org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:122= 5) =09at org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMe= taData.java:294) =09at org.apache.cassandra.config.KSMetaData.fromSchema(KSMetaData.java:275= ) =09at org.apache.cassandra.db.DefsTable.loadFromTable(DefsTable.java:158) =09at org.apache.cassandra.config.DatabaseDescriptor.loadSchemas(DatabaseDe= scriptor.java:535) =09at org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCa= ssandraDaemon.java:182) =09at org.apache.cassandra.service.AbstractCassandraDaemon.activate(Abstrac= tCassandraDaemon.java:353) =09at org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java= :106) java.lang.NullPointerException =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 167) =09at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:= 124) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.getString(JdbcUTF8.java:77) =09at org.apache.cassandra.cql.jdbc.JdbcUTF8.compose(JdbcUTF8.java:97) =09at org.apache.cassandra.db.marshal.UTF8Type.compose(UTF8Type.java:35) =09at org.apache.cassandra.cql3.UntypedResultSet$Row.getString(UntypedResul= tSet.java:87) =09at org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinit= ion.java:256) =09at org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMe= taData.java:1293) =09at org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:122= 5) =09at org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMe= taData.java:294) =09at org.apache.cassandra.config.KSMetaData.fromSchema(KSMetaData.java:275= ) =09at org.apache.cassandra.db.DefsTable.loadFromTable(DefsTable.java:158) =09at org.apache.cassandra.config.DatabaseDescriptor.loadSchemas(DatabaseDe= scriptor.java:535) =09at org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCa= ssandraDaemon.java:182) =09at org.apache.cassandra.service.AbstractCassandraDaemon.activate(Abstrac= tCassandraDaemon.java:353) =09at org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java= :106) Exception encountered during startup: null david@vlap1:~/opt/cassandra$=20 -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrato= rs: https://issues.apache.org/jira/secure/ContactAdministrators!default.jsp= a For more information on JIRA, see: http://www.atlassian.com/software/jira