Re: Safely Disabling Compaction

2012-05-20 Thread aaron morton
The docs for the CLI say:

- min_compaction_threshold: The minimum number of SSTables needed
to start a minor compaction. Default is 4, setting to 0 disables minor
compactions.

If you are getting an error using 0 can you please raise a ticket on 
https://issues.apache.org/jira/browse/CASSANDRA

(Also you can also set the compaction threshold on a single node via nodetool. )

Thanks
-
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 18/05/2012, at 3:09 PM, Vijay wrote:

 I would rather set the Keyspace setting min_compaction_threshold and 
 max_compaction_threshold to be a higher number and once i am ready i will put 
 the value back... This way i dont need to restart. 
 Having said that why not set the compaction throughput to 1 (low enough to 
 not have contention) and complete the stream?
 
 Regards,
 /VJ
 
 
 
 On Wed, May 16, 2012 at 2:43 PM, sj.climber sj.clim...@gmail.com wrote:
 Hi,
 
 In an effort to minimize IO contention, I'd like to disable compactions
 while I'm streaming SSTables to the cluster.  When done streaming, I intend
 on forcing a major compaction through nodetool.
 
 Elsewhere in the forums, various folks suggest setting
 max_compaction_threshold = 0 to disable compaction.  While this works
 sometimes (via 'update column family family with
 max_compaction_threshold=0'), I've observed a number of serious issues with
 this approach:
 
 1) You can't create a column family with max_compaction_threshold = 0.  The
 CLI reports that min_compaction_threshold must have a value = 2, and
 max_compaction_threshold can't be lower than it.  Worse yet, trying to
 create a column family with max_compaction_threshold = 0 gets the cluster
 into a Schema Disagreement Exception (since the node on which you issue the
 migration command fails with a fatal error).
 
 2) Cassandra will allow me to update an existing column family with
 max_compaction_threshold = 0.  But if I restart the node, it will crash on
 startup.
 java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
 org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:160)
 Caused by: java.lang.RuntimeException:
 java.lang.reflect.InvocationTargetException
 ...
 org.apache.cassandra.config.CFMetaData.createCompactionStrategyInstance(CFMetaData.java:839)
... 14 more
 Caused by: java.lang.RuntimeException: The max_compaction_threshold cannot
 be smaller than the min.
at
 org.apache.cassandra.db.ColumnFamilyStore.setMaximumCompactionThreshold(ColumnFamilyStore.java:1740)
at org.apache.
 
 
 Is there another solution for more safely enabling/disabling compaction?
 
 Thanks!
 
 --
 View this message in context: 
 http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Safely-Disabling-Compaction-tp7562777.html
 Sent from the cassandra-u...@incubator.apache.org mailing list archive at 
 Nabble.com.
 



RE: Safely Disabling Compaction

2012-05-20 Thread Viktor Jevdokimov
To temporarily turn off compactions without schema update, use
nodetool –h node_ip -p port setcompactionthreshold keyspace cfname 
minthreshold maxthreshold
for every node and every column family you need.

If nodetool throws same exception, do in 2 steps:

1.   nodetool setcompactionthreshold keyspace cfname 0 32 (32 – use 
yours instead)

2.   nodetool setcompactionthreshold keyspace cfname 0 0
To restore, set your normal values.




Best regards / Pagarbiai
Viktor Jevdokimov
Senior Developer

Email: viktor.jevdoki...@adform.commailto:viktor.jevdoki...@adform.com
Phone: +370 5 212 3063, Fax +370 5 261 0453
J. Jasinskio 16C, LT-01112 Vilnius, Lithuania
Follow us on Twitter: @adforminsiderhttp://twitter.com/#!/adforminsider
What is Adform: watch this short videohttp://vimeo.com/adform/display

[Adform News] http://www.adform.com


Disclaimer: The information contained in this message and attachments is 
intended solely for the attention and use of the named addressee and may be 
confidential. If you are not the intended recipient, you are reminded that the 
information remains the property of the sender. You must not use, disclose, 
distribute, copy, print or rely on this e-mail. If you have received this 
message in error, please contact the sender immediately and irrevocably delete 
this message and any copies.

From: Vijay [mailto:vijay2...@gmail.com]
Sent: Friday, May 18, 2012 06:09
To: user@cassandra.apache.org
Cc: cassandra-u...@incubator.apache.org
Subject: Re: Safely Disabling Compaction

I would rather set the Keyspace setting min_compaction_threshold and 
max_compaction_threshold to be a higher number and once i am ready i will put 
the value back... This way i dont need to restart.
Having said that why not set the compaction throughput to 1 (low enough to not 
have contention) and complete the stream?

Regards,
/VJ


On Wed, May 16, 2012 at 2:43 PM, sj.climber 
sj.clim...@gmail.commailto:sj.clim...@gmail.com wrote:
Hi,

In an effort to minimize IO contention, I'd like to disable compactions
while I'm streaming SSTables to the cluster.  When done streaming, I intend
on forcing a major compaction through nodetool.

Elsewhere in the forums, various folks suggest setting
max_compaction_threshold = 0 to disable compaction.  While this works
sometimes (via 'update column family family with
max_compaction_threshold=0'), I've observed a number of serious issues with
this approach:

1) You can't create a column family with max_compaction_threshold = 0.  The
CLI reports that min_compaction_threshold must have a value = 2, and
max_compaction_threshold can't be lower than it.  Worse yet, trying to
create a column family with max_compaction_threshold = 0 gets the cluster
into a Schema Disagreement Exception (since the node on which you issue the
migration command fails with a fatal error).

2) Cassandra will allow me to update an existing column family with
max_compaction_threshold = 0.  But if I restart the node, it will crash on
startup.
java.lang.reflect.InvocationTargetException
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at
org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:160)
Caused by: java.lang.RuntimeException:
java.lang.reflect.InvocationTargetException
...
org.apache.cassandra.config.CFMetaData.createCompactionStrategyInstance(CFMetaData.java:839)
   ... 14 more
Caused by: java.lang.RuntimeException: The max_compaction_threshold cannot
be smaller than the min.
   at
org.apache.cassandra.db.ColumnFamilyStore.setMaximumCompactionThreshold(ColumnFamilyStore.java:1740)
   at org.apache.


Is there another solution for more safely enabling/disabling compaction?

Thanks!

--
View this message in context: 
http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Safely-Disabling-Compaction-tp7562777.html
Sent from the 
cassandra-u...@incubator.apache.orgmailto:cassandra-u...@incubator.apache.org 
mailing list archive at Nabble.com.

inline: signature-logo29.png

Re: Safely Disabling Compaction

2012-05-17 Thread Vijay
I would rather set the Keyspace setting min_compaction_threshold
and max_compaction_threshold to be a higher number and once i am ready i
will put the value back... This way i dont need to restart.
Having said that why not set the compaction throughput to 1 (low enough to
not have contention) and complete the stream?

Regards,
/VJ



On Wed, May 16, 2012 at 2:43 PM, sj.climber sj.clim...@gmail.com wrote:

 Hi,

 In an effort to minimize IO contention, I'd like to disable compactions
 while I'm streaming SSTables to the cluster.  When done streaming, I intend
 on forcing a major compaction through nodetool.

 Elsewhere in the forums, various folks suggest setting
 max_compaction_threshold = 0 to disable compaction.  While this works
 sometimes (via 'update column family family with
 max_compaction_threshold=0'), I've observed a number of serious issues with
 this approach:

 1) You can't create a column family with max_compaction_threshold = 0.  The
 CLI reports that min_compaction_threshold must have a value = 2, and
 max_compaction_threshold can't be lower than it.  Worse yet, trying to
 create a column family with max_compaction_threshold = 0 gets the cluster
 into a Schema Disagreement Exception (since the node on which you issue the
 migration command fails with a fatal error).

 2) Cassandra will allow me to update an existing column family with
 max_compaction_threshold = 0.  But if I restart the node, it will crash on
 startup.
 java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at

 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at

 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
 org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:160)
 Caused by: java.lang.RuntimeException:
 java.lang.reflect.InvocationTargetException
 ...

 org.apache.cassandra.config.CFMetaData.createCompactionStrategyInstance(CFMetaData.java:839)
... 14 more
 Caused by: java.lang.RuntimeException: The max_compaction_threshold cannot
 be smaller than the min.
at

 org.apache.cassandra.db.ColumnFamilyStore.setMaximumCompactionThreshold(ColumnFamilyStore.java:1740)
at org.apache.


 Is there another solution for more safely enabling/disabling compaction?

 Thanks!

 --
 View this message in context:
 http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Safely-Disabling-Compaction-tp7562777.html
 Sent from the cassandra-u...@incubator.apache.org mailing list archive at
 Nabble.com.