---
title: create
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

Create async-event-queues, disk-stores, gateway receivers, gateway senders, indexes, and regions.

-   **[create async-event-queue](#topic_ryz_pb1_dk)**

    Creates an asynchronous event queue for batching events before they are delivered by a gateway sender.

-   **[create defined indexes](#topic_w2t_l3m_qq)**

    Creates all the defined indexes.

-   **[create disk-store](#topic_bkn_zty_ck)**

    Defines a pool of one or more disk stores, which can be used by regions and client subscription queues, and gateway sender queues for WAN distribution.

-   **[create gateway-receiver](#topic_a4x_pb1_dk)**

    Creates a gateway receiver. You can only have one gateway receiver on each member, and unlike a gateway sender, you do not need to specify an identifier for the gateway receiver .

-   **[create gateway-sender](#topic_hg2_bjz_ck)**

    Creates a gateway sender on one or more members of a cluster.

-   **[create index](#topic_960A5B6FD3D84E1881EE118E299DD12D)**

    Create an index that can be used when executing queries.

-   **[create jndi-binding](#create_jndi-binding)**

    Create a JNDI binding that specifies resource attributes which describe a JDBC connection.

-   **[create lucene index](#create_lucene_index)**

    Create a region with given path and configuration.

-   **[create region](#topic_54B0985FEC5241CA9D26B0CE0A5EA863)**

    Create a region with given path and configuration.


**Note:** The order in which components are created matters. For example, the recommendation for WAN setup is:

- Create/start WAN senders first
- Create Regions
- Create/start WAN receivers last

This assures that when WAN receivers are started, their associated regions are in place. Otherwise,
the `create region` command may fail if events are received before the region exists.
For more on this topic, see [Configuring a Multi-site (WAN) System](../../../topologies_and_comm/multi_site_configuration/setting_up_a_multisite_system.html).

## <a id="topic_ryz_pb1_dk" class="no-quick-link"></a>create async-event-queue

Creates an asynchronous event queue for batching events before they are delivered by a gateway sender.

See [Configuring Multi-Site (WAN) Event Queues](../../../developing/events/configure_multisite_event_messaging.html#configure_multisite_event_messaging).

**Availability:** Online. You must be connected in `gfsh` to a JMX Manager member to use this command.

**Syntax:**

``` pre
create async-event-queue --id=value --listener=value [--groups=value(,value)*]
    [--parallel(=value)?] [--enable-batch-conflation(=value)?] [--batch-size=value]
    [--batch-time-interval=value] [--persistent(=value)?] [--disk-store=value]
    [--disk-synchronous(=value)?] [--max-queue-memory=value]
    [--dispatcher-threads=value] [--order-policy=value]
    [--gateway-event-filter=value(,value)*]
    [--gateway-event-substitution-filter=value]
    [--listener-param=value(,value)*] [--forward-expiration-destroy(=value)?]
    [--pause-event-processing(=value)?]
```

**Parameters, create async-event-queue:**
<table>
<colgroup>
<col width="33%" />
<col width="34%" />
<col width="33%" />
</colgroup>
<thead>
<tr class="header">
<th>Name</th>
<th>Description</th>
<th>Default Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;id</span></td>
<td><em>Required</em>. ID of the asynchronous event queue</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;groups</span></td>
<td>The queue is created on all members of the group(s). If you do not specify a group, the queue is created on all members.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;parallel</span></td>
<td>Specifies whether the queue is parallel.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-batch-conflation</span></td>
<td>Enables batch conflation.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;batch-size</span></td>
<td>Maximum number of messages that a batch can contain.</td>
<td>100</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;batch-time-interval</span></td>
<td>Maximum amount of time, in ms, that can elapse before a batch is delivered, when no events are found in the queue to reach the batch-size.</td>
<td>5</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;persistent</span></td>
<td>Boolean value that determines whether <%=vars.product_name%> persists this queue.</td>
<td>false
<p>If specified with out a value, default is true.</p></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;disk-store</span></td>
<td>Named disk store to use for storing queue overflow, or for persisting the queue. If you specify a value, the named disk store must exist. If you specify a null value, <%=vars.product_name%> uses the default disk store for overflow and queue persistence.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;disk-synchronous</span></td>
<td>Specifies whether disk writes are synchronous.</td>
<td>true</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;max-queue-memory</span></td>
<td>Maximum amount of memory in megabytes that the queue can consume before overflowing to disk.</td>
<td>100</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;dispatcher-threads</span></td>
<td>Number of threads used for sending events.</td>
<td>5</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;order-policy</span></td>
<td>Policy for dispatching events when <code>&#8209;&#8209;dispatcher-threads</code> is &gt; 1. Possible values are <code class="ph codeph">THREAD</code>, <code class="ph codeph">KEY</code>, <code class="ph codeph">PARTITION</code>.</td>
<td>KEY</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;gateway-event-filter</span></td>
<td>List of fully qualified class names of GatewayEventFilters for this queue. These classes filter events before dispatching to remote servers.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;gateway-event-substitution-filter</span></td>
<td>Fully-qualified class name of the <code class="ph codeph">GatewayEventSubstitutionFilter</code> for this queue.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;listener</span></td>
<td><em>Required.</em> Fully-qualified class name of Async Event Listener for this queue</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;listener-param</span></td>
<td>Parameter name and value to be passed to the Async Event Listener class. Optionally, you can specify a value by following the parameter name with the <code>#</code> character and the value. For example:
<pre class="pre codeblock"><code>--listener-param=myParam#24</code></pre></td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;forward-expiration-destroy</span></td>
<td>Enables forwarding of expiration destroy operations to AsyncEventListener instances. If specified without a value, this parameter is set to “false”.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;pause-event-processing</span></td>
<td>Specifies whether event dispatching from the queue to the listener(s) will be paused when the AsyncEventQueue is started. If specified without a value, this parameter is set to "true".</td>
<td>false</td>
</tr>
</tbody>
</table>

**Example Commands:**

``` pre
create async-event-queue --id=myAEQ --listener=myApp.myListener
```

## <a id="topic_w2t_l3m_qq" class="no-quick-link"></a>create defined indexes

Creates all the defined indexes.

See also [define index](define.html) and [clear defined indexes](clear.html).

**Availability:** Online. You must be connected in <span class="keyword parmname">gfsh</span> to a JMX Manager member to use this command.

**Syntax:**

``` pre
create defined indexes [--members=value(,value)*] [--groups=value(,value)*]
```

**Parameters, create defined indexes:**

| Name                                           | Description                                                        | Default |
|------------------------------------------------|--------------------------------------------------------------------|---------|
| <span class="keyword parmname">&#8209;&#8209;members</span> | Name/Id of the member(s) on which index will be created.              |         |
| <span class="keyword parmname">&#8209;&#8209;groups</span>  | The index will be created on all the members in the member group(s). |         |


**Example Commands:**

``` pre
create defined indexes
```

**Sample Output:**

``` pre
gfsh>create defined indexes
Indexes successfully created. Use list indexes to get details.
1. ubuntu(server1:17682)<v1>:27574
```

If index creation fails, you may receive an error message in gfsh similar to the following:

``` pre
gfsh>create defined indexes
Exception : org.apache.geode.cache.query.RegionNotFoundException , 
Message : Region ' /r3' not found: from  /r3Occurred on following members
1. india(s1:17866)<v1>:27809
```

## <a id="topic_bkn_zty_ck" class="no-quick-link"></a>create disk-store

Defines a pool of one or more disk stores, which can be used by regions and client subscription queues, and gateway sender queues for WAN distribution.

See [Disk Storage](../../../managing/disk_storage/chapter_overview.html)

**Availability:** Online. You must be connected in <span class="keyword parmname">gfsh</span> to a JMX Manager member to use this command.

**Syntax:**

``` pre
create disk-store --name=value --dir=value(,value)* [--allow-force-compaction(=value)?] 
[--auto-compact(=value)?] [--compaction-threshold=value] [--max-oplog-size=value]
[--queue-size=value] [--time-interval=value] [--write-buffer-size=value]
[--groups=value(,value)*]
[--disk-usage-warning-percentage=value] [--disk-usage-critical-percentage=value]
```


**Parameters, create disk-store:**

<table>
<colgroup>
<col width="25%" />
<col width="50%" />
<col width="25%" />
</colgroup>
<thead>
<tr class="header">
<th>Name</th>
<th>Description</th>
<th>Default Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;name</span></td>
<td><em>Required.</em> The name of this disk store.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;dir</span></td>
<td><em>Required.</em> One or more directory names where the disk store files are written. Optionally, directory names may be followed by <code class="ph codeph">#</code> and the maximum number of megabytes that the disk store can use in the directory. For example:
<pre class="pre codeblock"><code>--dir=/data/ds1 
--dir=/data/ds2#5000</code></pre>
If the specified directory does not exist, the command will create the directory for you.</td>
<td>If the maximum directory size in megabytes is not specified, it will be set to `2147483647` (the value of `Integer.MAX_VALUE`)</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;allow-force-compaction</span></td>
<td>Set to true to allow disk compaction to be forced on this disk store.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;auto-compact</span></td>
<td>Set to true to automatically compact the disk files.</td>
<td>true</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;compaction-threshold</span></td>
<td>Percentage of non-garbage remaining, below which the disk store is eligible for compaction.</td>
<td>50</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;max-oplog-size</span></td>
<td>Maximum size, in megabytes, for an oplog file. When the oplog file reaches this size, the file is rolled over to a new file.</td>
<td>1024</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;queue-size</span></td>
<td>Maximum number of operations that can be asynchronously queued to be written to disk.</td>
<td>0</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;time-interval</span></td>
<td>The number of milliseconds that can elapse before unwritten data is written to disk.</td>
<td>1000</td>
</tr>
<tr>
<td><span class="keyword parmname"> --groups</span></td>
<td>The disk store is created on all members of the group(s). If no group is specified, the disk store is created on all members.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;write-buffer-size</span></td>
<td>The size in bytes of the write buffer that this disk store uses when writing data to disk. Larger values may increase performance but use more memory. The disk store allocates one direct memory buffer of this size.</td>
<td>32768</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;disk-usage-warning-percentage</span></td>
<td>Disk usage above this threshold generates a warning message. For example, if the threshold is set to 90%, then on a 1 TB drive falling under 100 GB of free disk space generates the warning.
<p>Set to &quot;0&quot; (zero) to disable.</p></td>
<td>90</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;disk-usage-critical-percentage</span></td>
<td>Disk usage above this threshold generates an error message and shuts down the member's cache. For example, if the threshold is set to 99%, then falling under 10 GB of free disk space on a 1 TB drive generates the error and shuts down the cache.
<p>Set to &quot;0&quot; (zero) to disable.</p></td>
<td>99</td>
</tr>
</tbody>
</table>

**Example Commands:**

``` pre
create disk-store --name-store1 --dir=/data/ds1
```

**Sample Output:**

``` pre
gfsh>create disk-store --name-store1 --dir=/data/ds1
Member  | Result
------- | -------
server1 | Success
```

## <a id="topic_a4x_pb1_dk" class="no-quick-link"></a>create gateway-receiver

Creates gateway receivers. You can only have one gateway receiver on each member, and unlike a gateway sender, you do not need to specify an identifier for the gateway receiver.

The create occurs on all servers,
unless the `--groups` or `--members` option is specified.

If the gateway receiver creation succeeds on at least one member,
this `gfsh` command exits with an exit code indicating success.

Outputs a tabular format status of each member's gateway receiver,
independent of the success or failure of the creation.

See [Gateway Receivers](../../../topologies_and_comm/topology_concepts/multisite_overview.html).

**Availability:** Online. You must be connected in `gfsh` to a JMX Manager member to use this command.

**Syntax:**

``` pre
create gateway-receiver [--groups=value(,value)*] [--members=value(,value)*] 
  [--manual-start=(value)?] [--start-port=value] [--end-port=value] [--bind-address=value] 
  [--maximum-time-between-pings=value] [--socket-buffer-size=value]
  [--gateway-transport-filter=value(,value)*] [--hostname-for-senders=value]
  [--if-not-exists=(value)?]
```

**Parameters, create gateway-receiver:**

<table>
<colgroup>
<col width="25%" />
<col width="65%" />
<col width="10%" />
</colgroup>
<thead>
<tr class="header">
<th>Name</th>
<th>Description</th>
<th>Default Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;groups</span></td>
<td>Gateway receivers are created on the members of the group(s).</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;members</span></td>
<td>Name of the member(s) on which to create the gateway receiver.
For backward compatibility, no gateway receiver configuration is persisted
if this option is specified and cluster configuration is enabled.
</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;manual-start</span></td>
<td>Boolean value that specifies whether you need to manually start the gateway receiver. When specified without providing a boolean value or when specified and set to &quot;true&quot;, the gateway receiver must be started manually.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;start-port</span></td>
<td><p>Starting port number to use when specifying the range of possible port numbers this gateway receiver will use to connects to gateway senders in other sites. <%=vars.product_name%> chooses an unused port number in the specified port number range to start the receiver. If no port numbers in the range are available, an exception is thrown.</p>
<p>The <code class="ph codeph">start-port</code> and <code class="ph codeph">end-port</code> values are inclusive. For example, if you specify <code class="ph codeph">start-port=&quot;50510&quot;</code> and <code class="ph codeph">end-port=&quot;50520&quot;</code>, <%=vars.product_name%> chooses a port value from 50510 to 50520.</p></td>
<td>5000</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;end-port</span></td>
<td><p>Defines the upper bound port number to use when specifying the range of possible port numbers this gateway receiver will use to for connections from gateway senders in other sites. <%=vars.product_name%> chooses an unused port number in the specified port number range to start the receiver. If no port numbers in the range are available, an exception is thrown.</p>
<p>The <code class="ph codeph">end-port</code> and <code class="ph codeph">start-port</code> values are inclusive. For example, if you specify <code class="ph codeph">start-port=&quot;50510&quot;</code> and <code class="ph codeph">end-port=&quot;50520&quot;</code>, <%=vars.product_name%> chooses a port value from 50510 to 50520.</p></td>
<td>5500</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;bind-address</span></td>
<td>Network address for connections from gateway senders in other sites. Specify the address as a literal string value.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;socket-buffer-size</span></td>
<td>An integer value that sets the buffer size (in bytes) of the socket connection for this gateway receiver. This value should match the <code class="ph codeph">socket-buffer-size</code> setting of gateway senders that connect to this receiver.</td>
<td>32768</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;gateway-transport-filter</span></td>
<td>The fully qualified class name of the GatewayTransportFilter to be added to the Gateway receiver.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;maximum-time-between-pings</span></td>
<td>Integer value that specifies the time interval (in milliseconds) to use between pings to connected WAN sites. This value determines the maximum amount of time that can elapse before a remote WAN site is considered offline.</td>
<td>60000</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;hostname-for-senders</span></td>
<td>The host name or IP address told to gateway senders as the address for them to connect to. The locator informs gateway senders of this value.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;if-not-exists</span></td>
<td>When specified without providing a boolean value or when specified and set to &quot;true&quot;, gateway receivers will not be created if they already exist. Command output reports the status of each creation attempt.
</td>
<td>false</td>
</tr>

</tbody>
</table>

**Example Commands:**

``` pre
gfsh>create gateway-receiver --members=server1
```

**Sample Output:**

``` pre
gfsh>create gateway-receiver --members=server1
Member  | Status
------- | ---------------------------------------------------------------------------
server1 | GatewayReceiver created on member "server1" and will listen on the port "0"
```

## <a id="topic_hg2_bjz_ck" class="no-quick-link"></a>create gateway-sender

Creates a gateway sender on one or more members of a cluster.

See [Gateway Senders](../../../topologies_and_comm/topology_concepts/multisite_overview.html).

**Note:**
The gateway sender configuration for a specific sender `id` must be identical on each <%=vars.product_name%> member that hosts the gateway sender.

**Availability:** Online. You must be connected in `gfsh` to a JMX Manager member to use this command.

**Syntax:**

``` pre
create gateway-sender --id=value --remote-distributed-system-id=value 
   [--groups=value(,value)*] [--members=value(,value)*] [--parallel(=value)?]
   [--manual-start=value] [--socket-buffer-size=value] [--socket-read-timeout=value] 
   [--enable-batch-conflation=value] [--batch-size=value] [--batch-time-interval=value]
   [--enable-persistence=value] [--disk-store-name=value] [--disk-synchronous=value] 
   [--maximum-queue-memory=value] [--alert-threshold=value] [--dispatcher-threads=value] 
   [--order-policy=value][--gateway-event-filter=value(,value)*]
   [--gateway-transport-filter=value(,value)*]
   [--group-transaction-events(=value)?]
```

**Parameters, create gateway-sender:**

<table>
<colgroup>
<col width="30%" />
<col width="50%" />
<col width="20%" />
</colgroup>
<thead>
<tr class="header">
<th>Name</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;id</span></td>
<td><em>Required.</em> Unique identifier for the gateway sender, usually an identifier associated with a physical location.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;remote-distributed-system-id</span></td>
<td><em>Required.</em> ID of the remote cluster where this gateway sender sends events.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;groups</span></td>
<td>Gateway senders are created on the members of the group(s).</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;members</span></td>
<td>Name of the member(s) on which to create the gateway sender.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;parallel</span></td>
<td>When set to true, specifies a parallel Gateway Sender.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-batch-conflation</span></td>
<td>Boolean value that determines whether <%=vars.product_name%> should conflate messages.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;manual-start</span></td>
<td><b>Deprecated.</b> Boolean value that specifies whether you need to manually start the gateway sender. If you supply a null value, the default value of false is used, and the gateway sender starts automatically. <em>A manual start is likely to cause data loss, so manual start should never be used in a production system.</em></td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;socket-buffer-size</span></td>
<td>Size of the socket buffer that sends messages to remote sites. This size should match the size of the <code class="ph codeph">socket-buffer-size</code> attribute of remote gateway receivers that process region events.</td>
<td>32768</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;socket-read-timeout</span></td>
<td>Amount of time in milliseconds that the gateway sender will wait to receive an acknowledgment from a remote site. By default this is set to 0, which means there is no timeout. If you do set this timeout, you must set it to a minimum of 30000 (milliseconds). Setting it to a lower number will generate an error message and reset the value to the default of 0.</td>
<td>0</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;batch-size</span></td>
<td>Maximum number of messages that a batch can contain.</td>
<td>100</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;batch-time-interval</span></td>
<td>Maximum amount of time, in ms, that can elapse before a batch is delivered, when no events are found in the queue to reach the batch-size.</td>
<td>1000</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-persistence</span></td>
<td>Boolean value that determines whether <%=vars.product_name%> persists the gateway queue.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;disk-store-name</span></td>
<td>Named disk store to use for storing the queue overflow, or for persisting the queue. If you specify a value, the named disk store must exist. If you specify a null value, <%=vars.product_name%> uses the default disk store for overflow and queue persistence.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;disk-synchronous</span></td>
<td>For regions that write to disk, boolean that specifies whether disk writes are done synchronously for the region.</td>
<td>true</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;maximum-queue-memory</span></td>
<td>Maximum amount of memory in megabytes that the queue can consume before overflowing to disk.</td>
<td>100 MB</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;alert-threshold</span></td>
<td>Maximum number of milliseconds that a region event can remain in the gateway sender queue before <%=vars.product_name%> logs an alert.</td>
<td>0</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;dispatcher-threads</span></td>
<td>Number of dispatcher threads that are used to process region events from a gateway sender queue or asynchronous event queue.</td>
<td>5</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;order-policy</span></td>
<td>When the <code class="ph codeph">dispatcher-threads</code> attribute is greater than 1, <code class="ph codeph">order-policy</code> configures the way in which multiple dispatcher threads process region events from a serial gateway queue or serial asynchronous event queue. This attribute can have one of the following values:
<dt><b>key</b></dt>
<dd>When distributing region events from the local queue, multiple dispatcher threads preserve the order of key updates.</dd>
<dt><b>thread</b></dt>
<dd>When distributing region events from the local queue, multiple dispatcher threads preserve the order in which a given thread added region events to the queue.</dd>
<dt><b>partition</b></dt>
<dd>When distributing region events from the local queue, multiple dispatcher threads preserve the order in which region events were added to the local queue. For a partitioned region, this means that all region events delivered to a specific partition are delivered in the same order to the remote <%=vars.product_name%> site. For a distributed region, this means that all key updates delivered to the local gateway sender queue are distributed to the remote site in the same order.</dd>

<p>You cannot configure the <code class="ph codeph">order-policy</code> for a parallel event queue, because parallel queues cannot preserve event ordering for regions. Only the ordering of events for a given partition (or in a given queue of a distributed region) can be preserved.</p></td>
<td>key</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;gateway-event-filter</span></td>
<td>A list of fully-qualified class names of GatewayEventFilters (separated by commas) to be associated with the GatewaySender. This serves as a callback for users to filter out events before dispatching to a remote cluster. For example:
<pre class="pre codeblock"><code>gateway-event-filter=com.user.filters.MyFilter1,com.user.filters.MyFilters2</code></pre></td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;gateway-transport-filter</span></td>
<td>The fully-qualified class name of the GatewayTransportFilter to be added to the GatewaySender.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;group-transaction-events</span></td>
<td>Boolean value to ensure that all the events of a transaction are sent in the same batch, i.e., they are never spread across different batches.
<p>Only allowed to be set on gateway senders with the <code class="ph codeph">parallel</code> attribute set to false and <code class="ph codeph">dispatcher-threads</code> attribute equal to 1, or on gateway senders with the <code class="ph codeph">parallel</code> attribute set to true. Also, the  <code class="ph codeph">enable-batch-conflation</code> attribute of the gateway sender must be set to false.</p>
<p><b>Note:</b> In order to work for a transaction, the regions to which the transaction events belong must be replicated by the same set of senders with this flag enabled.</p>
<p><b>Note:</b> If the above condition is not fulfilled or under very high load traffic conditions, it may not be guaranteed that all the events for a transaction will be sent in the same batch, even if <code class="ph codeph">group-transaction-events</code> is enabled. The number of batches sent with incomplete transactions can be retrieved from the <code class="ph codeph">GatewaySenderMXBean</code> bean.</p></td>
<td>false</td>
</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enforce-threads-connect-same-receiver</span></td>
<td>This parameter applies only to serial gateway senders. If true, receiver member id is checked by all dispatcher threads when the connection is established to ensure they connect to the same receiver. Instead of starting all dispatcher threads in parallel, one thread is started first, and after that the rest are started in parallel.</td>
<td>false</td>
</tr>
</tbody>
</table>

**Example Commands:**

``` pre
gfsh>create gateway-sender --remote-distributed-system-id="2" --id="sender2"
```

**Sample Output:**

``` pre
gfsh>create gateway-sender --remote-distributed-system-id="2" --id="sender2"
Member  | Status
------- | --------------------------------------------
server1 | GatewaySender "sender2" created on "server1"
```

## <a id="topic_960A5B6FD3D84E1881EE118E299DD12D" class="no-quick-link"></a>create index

Create an index that can be used when executing queries.

**Availability:** Online. You must be connected in `gfsh` to a JMX Manager member to use this command.

See [Working with Indexes](../../../developing/query_index/query_index.html).

**Syntax:**

``` pre
create index --name=value --expression=value --region=value 
[--members=value(,value)*] [--type=value] [--groups=value(,value)*]
```

**Parameters, create index:**

| Name                                               | Description                                                                            | Default |
|----------------------------------------------------|----------------------------------------------------------------------------------------|---------|
| <span class="keyword parmname">&#8209;&#8209;name</span>       | *Required.* Name of the index to create.                                               |         |
| <span class="keyword parmname">&#8209;&#8209;expression</span> | *Required.* Field of the region values that are referenced by the index.               |         |
| <span class="keyword parmname">&#8209;&#8209;region</span>     | *Required.* Name/Path of the region which corresponds to the "from" clause in a query. |         |
| <span class="keyword parmname">&#8209;&#8209;members</span>     | Name/Id of the member(s) on which index will be created.                                  |         |
| <span class="keyword parmname">&#8209;&#8209;type</span>       | Type of the index. Valid values are: `range` and `key`. (A third type, `hash`, is still recognized but hash indexes are deprecated.)                       | `range` |
| <span class="keyword parmname">&#8209;&#8209;groups</span>      | The index will be created on all the members in the group(s).                     |         |


**Example Commands:**

``` pre
create index --name=myKeyIndex --expression=region1.Id --region=region1 --type=key
```

**Sample Output:**

``` pre
gfsh>create index --name=myKeyIdex --expression=region1.Id --region=region1 --type=key
Index successfully created with following details
Name       : myKeyIdex
Expression : region1.Id
RegionPath : /region1
Members which contain the index
1. ubuntu(server1:17682)<v1>:27574

gfsh>create index --name=myIndex2 --expression=exp2 --region=/exampleRegion
Failed to create index "myIndex2" due to following reasons
Index "myIndex2" already exists.  Create failed due to duplicate name.
Occurred on following members
1. ubuntu(server1:17682)<v1>:27574
```

## <a id="create_jndi-binding" class="no-quick-link"></a>create jndi-binding

Create a JNDI binding that specifies resource attributes which describe a
JDBC connection.

**Availability:** Online. You must be connected in <span class="keyword parmname">gfsh</span> to a JMX Manager member to use this command.

**Syntax:**

``` pre
create jndi-binding --name=value --url=value
 [--jdbc-driver-class=value] [--type=value] [--blocking-timeout-seconds=value]
 [--conn-pooled-datasource-class=value] [--idle-timeout-seconds=value]
 [--init-pool-size=value] [--login-timeout-seconds=value]
 [--managed-conn-factory-class=value] [--max-pool-size=value] [--password=value]
 [--transaction-type=value] [--username=value] [--xa-datasource-class=value]
 [--if-not-exists(=value)?] [--datasource-config-properties=value(,value)*]
```

**Parameters, create jndi-binding:**

| Name                                               | Description                                                                            | Default |
|----------------------------------------------------|----------------------------------------------------------------------------------------|---------|
| <span class="keyword parmname">&#8209;&#8209;name</span>       | *Required.* Name of the binding to create.                                               |         |
| <span class="keyword parmname">&#8209;&#8209;url or &#8209;&#8209;connection-url</span>       | *Required.* the JDBC driver connection URL string. For example, `jdbc:hsqldb:hsql://localhost:1701`.              |         |
| <span class="keyword parmname">&#8209;&#8209;jdbc-driver-class</span>       | The fully qualified name of the JDBC driver class.              |         |
| <span class="keyword parmname">&#8209;&#8209;type</span>       | Type of the XA datasource. One of: `MANAGED`, `SIMPLE`, `POOLED`, or `XAPOOLED`. If `--type=POOLED` and a `--conn-pooled-datasource-class` option is not specified, a pool will be created using Hikari. For more information on Hikari, see [https://brettwooldridge.github.io/HikariCP](https://brettwooldridge.github.io/HikariCP).    | `SIMPLE` |
| <span class="keyword parmname">&#8209;&#8209;blocking-timeout-seconds</span>       | Specifies the maximum time, in seconds, to block while waiting for a connection before throwing an exception.                                        |         |
| <span class="keyword parmname">&#8209;&#8209;conn-pooled-datasource-class</span>   | The fully qualified name of the connection pool implementation that holds XA datasource connections. If `--type=POOLED`, then this class must implement `org.apache.geode.datasource.PooledDataSourceFactory`.                                                 |         |
| <span class="keyword parmname">&#8209;&#8209;idle-timeout-seconds</span>   | Specifies the time, in seconds, that a connection may be idle before being closed. |         |
| <span class="keyword parmname">&#8209;&#8209;init-pool-size</span>   | Specifies the initial number of connections the pool should hold.                  |         |
| <span class="keyword parmname">&#8209;&#8209;login-timeout-seconds</span>   | The quantity of seconds after which the client thread will be disconnected due to inactivity. |         |
| <span class="keyword parmname">&#8209;&#8209;managed-conn-factory-class</span>   | The fully qualified name of the connection factory implementation.     |         |
| <span class="keyword parmname">&#8209;&#8209;max-pool-size</span>   | The maximum number of connections that may be created in a pool.                    |         |
| <span class="keyword parmname">&#8209;&#8209;password</span>   | The default password used when creating a new connection.                                |         |
| <span class="keyword parmname">&#8209;&#8209;transaction-type</span>   | Type of the transaction. One of `XATransaction`, `NoTransaction`, or `LocalTransaction`. |         |
| <span class="keyword parmname">&#8209;&#8209;username</span>   | Specifies the user name to be used when creating a new connection. When specified, if the `--password` option is not also specified, gfsh will prompt for the password. |         |
| <span class="keyword parmname">&#8209;&#8209;xa-datasource-class</span>   | The fully qualified name of the `javax.sql.XADataSource` implementation class. |         |
| <span class="keyword parmname">&#8209;&#8209;if-not-exists</span>   | When true, a duplicate jndi binding will not be created if one with the same name already exists.  When false, an attempt to create a duplicate jndi binding results in an error. The option is set to true if the option is specified without a value. | false   |
| <span class="keyword parmname">&#8209;&#8209;datasource-config-properties</span>   | Properties for the custom `XADataSource` driver. Append a JSON string containing a (name, type, value) tuple to set any property. If `--type=POOLED`, the properties will configure the database data source. If `--type=POOLED` and the value of a name within the tuple begins with the string "pool.", then the properties will configure the pool data source. For example: `--datasource-config-properties={'name':'name1','type':'type1','value':'value1'},{'name':'pool.name2','type':'type2','value':'value2'}`         |         |

**Example Commands:**

``` pre
gfsh>create jndi-binding --name=jndi1 --type=SIMPLE \
  --jdbc-driver-class=org.apache.derby.jdbc.EmbeddedDriver \
  --url="jdbc:derby:newDB;create=true"
```

## <a id="create_lucene_index" class="no-quick-link"></a>create lucene index

Create a Lucene index. For details on Lucene index creation, see [Apache Lucene Integration](../../../tools_modules/lucene_integration.html).

For additional Lucene-related gfsh commands, see [describe lucene index](describe.html#describe_lucene_index), [destroy lucene index](destroy.html#destroy_lucene_index), [list lucene indexes](list.html#list_lucene_indexes) and [search lucene](search.html#search_lucene).

**Availability:** Online. You must be connected in <span class="keyword parmname">gfsh</span> to a JMX Manager member to use this command.

**Syntax:**

``` pre
create lucene index --name=value --region=value --field=value(,value)*
  [--analyzer=value(,value)*] [--serializer=value] [--group=value(,value)*]
```

**Parameters, create lucene index:**

| Name                                               | Description                                                                            | Default |
|----------------------------------------------------|----------------------------------------------------------------------------------------|---------|
| <span class="keyword parmname">&#8209;&#8209;name</span>       | *Required.* Name of the index to create.                                               |         |
| <span class="keyword parmname">&#8209;&#8209;region</span>     | *Required.* Name/Path of the region on which to define the index. |         |
| <span class="keyword parmname">&#8209;&#8209;field</span>      | *Required.* Field(s) of the region values that are referenced by the index, specified as a comma-separated list. To treat the entire value as a single field, specify `__REGION_VALUE_FIELD`. |         |
| <span class="keyword parmname">&#8209;&#8209;analyzer</span>   | Analyzer(s) to extract terms from text, specified as a comma-separated list. If not specified, the default analyzer is used for all fields. If specified, the number of analyzers must exactly match the number of fields specified. When listing analyzers, use the keyword `DEFAULT` for any field that will use the default analyzer.                                  | Lucene `StandardAnalyzer`        |
| <span class="keyword parmname">&#8209;&#8209;serializer</span>   | Fully qualified class name of the serializer to be used with this index. The serializer must implement the `LuceneSerializer` interface. You can use the built-in `org.apache.geode.cache.lucene.FlatFormatSerializer` to index and search collections and nested fields. If not specified, the simple default serializer is used, which indexes and searches only the top level fields of the region objects.   | simple serializer        |
| <span class="keyword parmname">&#8209;&#8209;group</span>      | The index will be created on all the members in the specified member groups.                     |         |


**Example Commands:**

``` pre
gfsh>create lucene index --name=customerIndex --region=/Customer 
   --field=__REGION_VALUE_FIELD

gfsh>create lucene index --name=analyzerIndex --region=/Person 
     --field=name,email,address,revenue 
     --analyzer=DEFAULT,org.apache.lucene.analysis.core.KeywordAnalyzer,
                examples.MyCharacterAnalyzer,DEFAULT
```

**Sample Output:**

``` pre
gfsh>create lucene index --name=testIndex --region=testRegion
    --field=__REGION_VALUE_FIELD
               Member                  | Status
-------------------------------------- | ---------------------------------
192.168.1.23(server505:17200)<v1>:1025 | Successfully created lucene index
```

## <a id="topic_54B0985FEC5241CA9D26B0CE0A5EA863" class="no-quick-link"></a>create region

Create a region with given path and configuration.

You must specify either a `--type` or a `--template-region` for initial configuration when creating a region. Specifying a `--key-constraint` and `--value-constraint` makes object type information available during querying and indexing.

See [Region Data Storage and Distribution](../../../developing/region_options/chapter_overview.html).

See [Specifying JSON within Command-Line Options](../json_in_gfsh.html)
for syntax details.

**Availability:** Online. You must be connected in `gfsh` to a JMX Manager member to use this command.

**Syntax:**

``` pre
 create region --name=value [--type=value] [--template-region=value]
    [--groups=value(,value)*] [--if-not-exists(=value)?]
    [--key-constraint=value] [--value-constraint=value]
    [--enable-statistics=value] [--entry-idle-time-expiration=value]
    [--entry-idle-time-expiration-action=value]
    [--entry-time-to-live-expiration=value]
    [--entry-time-to-live-expiration-action=value]
    [--entry-idle-time-custom-expiry=value] [--entry-time-to-live-custom-expiry=value]
    [--region-idle-time-expiration=value]
    [--region-idle-time-expiration-action=value]
    [--region-time-to-live-expiration=value]
    [--region-time-to-live-expiration-action=value] [--disk-store=value]
    [--enable-synchronous-disk=value] [--enable-async-conflation=value]
    [--enable-subscription-conflation=value] [--cache-listener=value(,value)*]
    [--cache-loader=value] [--cache-writer=value]
    [--async-event-queue-id=value(,value)*]
    [--gateway-sender-id=value(,value)*] [--enable-concurrency-checks=value]
    [--enable-cloning=value] [--concurrency-level=value]
    [--colocated-with=value] [--local-max-memory=value]
    [--recovery-delay=value] [--redundant-copies=value]
    [--startup-recovery-delay=value] [--total-max-memory=value]
    [--total-num-buckets=value] [--compressor=value] [--off-heap(=value)?]
    [--partition-listener=value(,value)*] [--partition-resolver=value]
    [--eviction-entry-count=value] [--scope=value]
    [--eviction-max-memory=value] [--eviction-action=value]
    [--eviction-object-sizer=value]
```

**Parameters, create region:**

<table>
<colgroup>
<col width="20%" />
<col width="50%" />
<col width="30%" />
</colgroup>
<thead>
<tr class="header">
<th>Name</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;name</span></td>
<td><em>Required.</em> Name/Path of the region to be created.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;type</span></td>
<td><em>Required</em> (if template-region is not specified.) Type of region to create. Options include: PARTITION, PARTITION_REDUNDANT, REPLICATE, LOCAL, etc.
<p>To get a list of of all region type options, add the <span class="keyword parmname">&#8209;&#8209;type</span> parameter and then select the TAB key to display a full list.</p></td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;template-region </span></td>
<td><em>Required</em> (if type is not specified.) Name/Path of the region whose attributes should be duplicated when creating this region.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;groups</span></td>
<td>Group(s) of members on which the region will be created.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;if-not-exists</span></td>
<td>A new region will not be created if a region with the same name already exists. By default, an attempt to create a duplicate region is reported as an error.
If this option is specified without a value or is specified with a value of <code>true</code>, then gfsh displays a "Skipping..." acknowledgement, but does not throw an error.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;key-constraint</span></td>
<td>Fully qualified class name of the objects allowed as region keys. Ensures that keys for region entries are all of the same class.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;value-constraint </span></td>
<td>Fully qualified class name of the objects allowed as region values. If not specified, then region values can be of any class.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-statistics</span></td>
<td>Whether to gather statistics for the region. Must be true to use expiration on the region.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;entry-idle-time-expiration</span></td>
<td>How long, in seconds, the region's entries can remain in the cache without being accessed.</td>
<td>no expiration</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;entry-idle-time-expiration-action </span></td>
<td>Action to be taken on an entry that has exceeded the idle expiration. Valid expiration actions include destroy, local-destroy, invalidate (default), local-invalidate.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;entry-time-to-live-expiration</span></td>
<td>How long, in seconds, the region's entries can remain in the cache without being accessed or updated. The default is no expiration of this type.</td>
<td>no expiration</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;entry-time-to-live-expiration-action</span></td>
<td>Action to be taken on an entry that has exceeded the TTL expiration. Valid expiration actions include destroy, local-destroy, invalidate (default), local-invalidate.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;entry-idle-time-custom-expiry</span></td>
<td>The name of a class implementing CustomExpiry for entry idle time. Append a JSON string for initialization properties.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;entry-time-to-live-custom-expiry</span></td>
<td>The name of a class implementing CustomExpiry for entry time to live. Append a JSON string for initialization properties.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;region-idle-time-expiration</span></td>
<td>How long, in seconds, the region can remain in the cache without its entries being accessed. The default is no expiration of this type.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;region-idle-time-expiration-action</span></td>
<td>Action to be taken on a region that has exceeded the idle expiration. Valid expiration actions include destroy, local-destroy, invalidate (default), local-invalidate. The destroy and local-destroy actions destroy the region. The invalidate and local-invalidate actions leave the region in place, but invalidate all of its entries.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;region-time-to-live-expiration</span></td>
<td>How long, in seconds, the region can remain in the cache without its entries being accessed or updated. The default is no expiration of this type.</td>
<td>no expiration</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;region-time-to-live-expiration-action</span></td>
<td>Action to be taken on a region that has exceeded the TTL expiration. Valid expiration actions include destroy, local-destroy, invalidate (default), local-invalidate. The destroy and local-destroy actions destroy the region. The invalidate and local-invalidate actions leave the region in place, but invalidate all of its entries.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;disk-store</span></td>
<td>Disk Store to be used by this region. The <a href="list.html#topic_BC14AD57EA304FB3845766898D01BD04">list disk-stores</a> command can be used to display existing disk stores.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-synchronous-disk</span></td>
<td>Whether writes are done synchronously for regions that persist data to disk.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-async-conflation</span></td>
<td>Whether to allow aggregation of asynchronous TCP/IP messages sent by the producer member of the region. A false value causes all asynchronous messages to be sent individually.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-subscription-conflation</span></td>
<td>Whether the server should conflate its messages to the client. A false value causes all server-client messages to be sent individually.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;cache-listener</span></td>
<td>Fully qualified class name of a plug-in to be instantiated for receiving after-event notification of changes to the region and its entries. Any number of cache listeners can be configured. A fully qualified class name may be appended with a JSON specification that will be parsed to become the fields of the parameter to the <code>init()</code> method for a class that implements the <code>Declarable</code> interface.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;cache-loader</span></td>
<td>Fully qualified class name of a plug-in to be instantiated for receiving notification of cache misses in the region. At most, one cache loader can be defined in each member for the region. For distributed regions, a cache loader may be invoked remotely from other members that have the region defined. A fully qualified class name may be appended with a JSON specification that will be parsed to become the fields of the parameter to the <code>initialize()</code> method for a class that implements the <code>Declarable</code> interface.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;cache-writer</span></td>
<td>Fully qualified class name of a plug-in to be instantiated for receiving before-event notification of changes to the region and its entries. The plug-in may cancel the event. At most, one cache writer can be defined in each member for the region. A fully qualified class name may be appended with a JSON specification that will be parsed to become the fields of the parameter to the <code>init()</code> method for a class that implements the <code>Declarable</code> interface.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;async-event-queue-id</span></td>
<td>IDs of the Async Event Queues that will be used for write-behind operations.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;gateway-sender-id</span></td>
<td>IDs of the Gateway Senders to which data will be routed.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-concurrency-checks</span></td>
<td>Whether Region Version Vectors are implemented. Region Version Vectors are an extension to the versioning scheme that aid in synchronization of replicated regions.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;enable-cloning</span></td>
<td>Determines how fromDelta applies deltas to the local cache for delta propagation. When true, the updates are applied to a clone of the value and then the clone is saved to the cache. When false, the value is modified in place in the cache.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;concurrency-level </span></td>
<td>Estimate of the maximum number of application threads that will concurrently access a region entry at one time. This attribute does not apply to partitioned regions.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;colocated-with </span></td>
<td>Central Region with which this region should be colocated.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;local-max-memory</span></td>
<td>Maximum amount of memory, in megabytes, to be used by the region in this process. (The default is 90% of available heap.)</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;recovery-delay </span></td>
<td>Delay in milliseconds that existing members will wait after a member crashes before restoring this region's redundancy on the remaining members. The default value (-1) indicates that redundancy will not be recovered after a failure.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;redundant-copies </span></td>
<td>Number of extra copies of buckets desired. Extra copies allow for both high availability in the face of VM departure (intended or unintended) and load balancing read operations. (Allowed values: 0, 1, 2 and 3)</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;startup-recovery-delay </span></td>
<td>Delay in milliseconds that new members will wait before assuming their share of cluster-level redundancy. This allows time for multiple regions to start before the redundancy workload is parceled out to the new members. A value of -1 indicates that adding new members will not trigger redundancy recovery.</td>
<td>The default is to recover redundancy immediately when a new member is added.</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;total-max-memory </span></td>
<td>Maximum amount of memory, in megabytes, to be used by the region in all processes.</td>
<td> </td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;total-num-buckets </span></td>
<td>Total number of hash buckets to be used by the region in all processes.</td>
<td>113</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;compressor</span></td>
<td>Java class name that implements compression for the region. You can write a custom compressor that implements <code class="ph codeph">org.apache.geode.compression.Compressor</code> or you can specify the Snappy compressor (<code class="ph codeph">org.apache.geode.compression.SnappyCompressor</code>), which is bundled with <%=vars.product_name%>. See <a href="../../../managing/region_compression.html">Region Compression</a>.</td>
<td>no compression</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;off-heap</span></td>
<td>Specifies whether the region values are stored in heap memory or off-heap memory. When true, region values are in off-heap memory. If the parameter is specified without a value, the value of true is used.</td>
<td>false</td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;partition-listener</span></td>
<td>Specifies fully-qualified class names of one or more custom partition listeners.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;partition-resolver</span></td>
<td>Specifies the full path to a custom partition resolver. Specify <code class="ph codeph">org.apache.geode.cache.util.StringPrefixPartitionResolver</code> to use the included string prefix <code class="ph codeph">PartitionResolver</code>.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;eviction-entry-count</span></td>
<td>Enables eviction, where the eviction policy is based on the number of entries in the region.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;eviction-max-memory</span></td>
<td>Enables eviction, where the eviction policy is based on the amount of memory consumed by the region, specified in megabytes.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;eviction-action</span></td>
<td>Action to take when the eviction threshold is reached.
<div class="p">
<table>
<tbody>
<tr>
<td>local-destroy</td>
<td>Entry is destroyed locally. Use with caution - may lead to inconsistencies.</td>
</tr>
<tr>
<td>overflow-to-disk</td>
<td>Entry is overflowed to disk. For partitioned regions, this provides the most reliable read behavior across the region.</td>
</tr>
</tbody>
</table>
</div>
</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;eviction-object-sizer</span></td>
<td>Specifies your implementation of the ObjectSizer interface to measure the size of objects in the region.
The sizer applies only to heap and memory based eviction.</td>
<td></td>
</tr>
<tr>
<td><span class="keyword parmname">&#8209;&#8209;scope</span></td>
<td>Specifies the scope of the Replicated region. This field can be only used if the --type parameter is set with a replicated region type. This parameter is invalid for all other region types. If this parameter is not set and --type is set to a replicated region, the the default scope DISTRIBUTED_ACK is set.</td>
<td></td>
</tr>
</tbody>
</table>

**Example Commands:**

``` pre
create region --name=region1 --type=REPLICATE_PERSISTENT \
--cache-writer=org.apache.geode.examples.MyCacheWriter \
--group=Group1 --disk-store=DiskStore1

create region --name=region12 --template-region=/region1

create region --name=region2 --type=REPLICATE \
--cache-listener=org.apache.geode.examples.MyCacheListener1,\
org.apache.geode.examples.MyCacheListener2 \
--group=Group1,Group2

create region --name=region3 --type=PARTITION_PERSISTENT --redundant-copies=2 \
--total-max-memory=1000 --startup-recovery-delay=5 --total-num-buckets=100 \
--disk-store=DiskStore2 --cache-listener=org.apache.geode.examples.MyCacheListener3 \
--group=Group2 

create region --name=region4 --type=REPLICATE_PROXY \
--cache-listener=org.apache.geode.examples.MyCacheListener1 --group=Group1,Group2

create region --name=myRegion --type=REPLICATE --eviction-max-memory=100 \
--eviction-action=overflow-to-disk --eviction-object-sizer=my.company.geode.MySizer

create region --name=r1 --type=PARTITION \
--cache-loader=org.example.myLoader{'URL':'jdbc:cloudscape:rmi:MyData'}
```

**Sample Output:**

``` pre
gfsh>create region --name=myRegion --type=LOCAL
Member  | Status
------- | ---------------------------------------
server1 | Region "/myRegion" created on "server1"
```


