Hi,
I hope I have understood what you wrote and created the following query
correctly:
select uip.vm_id, uip.network_id, uip.public_ip_address,
n.state as nic_state, n.removed as nic_removed,
vm.state as vm_state, vm.removed as vm_removed
from user_ip_address uip
join nics n on uip.vm_id = n.instance_id
join vm_instance vm on uip.vm_id = vm.id
where uip.id in (Select ip_address_id from firewall_rules fr where
fr.network_id=205);
+-------+------------+-------------------+--------------+---------------------+-----------+------------+
| vm_id | network_id | public_ip_address | nic_state | nic_removed |
vm_state | vm_removed |
+-------+------------+-------------------+--------------+---------------------+-----------+------------+
| 6 | 205 | 10.193.17.169 | Allocated | NULL |
Stopped | NULL |
| 10 | 205 | 10.193.17.136 | Allocated | NULL |
Stopped | NULL |
| 12 | 205 | 10.193.17.140 | Allocated | NULL |
Stopped | NULL |
| 13 | 205 | 10.193.17.141 | Allocated | NULL |
Stopped | NULL |
| 14 | 205 | 10.193.17.142 | Allocated | NULL |
Stopped | NULL |
| 15 | 205 | 10.193.17.174 | Deallocating | 2014-03-18 23:00:53 |
Expunging | NULL |
| 16 | 205 | 10.193.17.103 | Allocated | NULL |
Stopped | NULL |
+-------+------------+-------------------+--------------+---------------------+-----------+------------+
Is VM id 15 what you are looking for?
Thank you
Kambiz
Alena Prokharchyk <[email protected]> wrote:
>
> Kambiz, can you please try one more thing.
>
> 1) Locate all the firewall rules for your guest network (205, right?)
>
> Select id, ip_address_id from firewall_rules where network_id=205;
>
> 2) Now get all static nat enabled ip addresses for those rules:
>
> Select vm_id, network_id from user_ip_address where id in (Select id,
> ip_address_id from firewall_rules where network_id=205);
>
> For each vmId/networkId combo, check if there is non-removed nic and
> non-expunged vm. There might be some incorrect static nat ip/vm reference
> referring to vm that is removed already. If you find any, let me know and
> I will tell you how to clean it up
>
> -Alena.
>
> On 3/22/14, 5:41 AM, "Kambiz Darabi" <[email protected]> wrote:
>
>>Hi Alena,
>>
>>thank you for your help.
>>
>>The query returns no rows, i.e. nics.removed was not null, but I removed
>>the row though to see what happens: a new virtual router was created
>>which also couldn't be started due to the same NPE. I reverted the
>>change by restoring from the dump.
>>
>>I have to mention that prior to the restart, r-7-VM was the router which
>>was used by my instances. I deleted the router using the UI after the
>>first
>>occurrence of the NPE, because a post with a similar problem suggested
>>that the deleted router would be recreated again (and this procedure
>>solved the problem).
>>
>>Below I have attached the state of the two tables.
>>
>>Anything else I can try?
>>
>>Thank you
>>
>>
>>Kambiz
>>
>>mysql> select n.id, n.removed, n.ip4_address, n.netmask, n.gateway,
>>n.ip_type, n.reserver_name, n.network_id, i.id as instance_id, i.name,
>>i.state, i.type from vm_instance i join nics n on n.instance_id = i.id
>>where i.type = 'DomainRouter';
>>+----+---------------------+---------------+---------------+-------------+
>>---------+--------------------------+------------+-------------+---------+
>>-----------+--------------+
>>| id | removed | ip4_address | netmask | gateway
>>| ip_type | reserver_name | network_id | instance_id | name
>>| state | type |
>>+----+---------------------+---------------+---------------+-------------+
>>---------+--------------------------+------------+-------------+---------+
>>-----------+--------------+
>>| 9 | 2014-03-17 11:27:58 | 10.124.99.1 | 255.255.255.0 | NULL
>>| NULL | ExternalGuestNetworkGuru | 204 | 4 | r-4-VM
>>| Expunging | DomainRouter |
>>| 10 | 2014-03-17 11:27:58 | NULL | NULL | NULL
>>| NULL | ControlNetworkGuru | 202 | 4 | r-4-VM
>>| Expunging | DomainRouter |
>>| 11 | 2014-03-17 11:27:58 | 10.193.17.139 | 255.255.255.0 | 10.193.17.1
>>| NULL | PublicNetworkGuru | 200 | 4 | r-4-VM
>>| Expunging | DomainRouter |
>>| 14 | 2014-03-17 11:27:52 | 10.124.99.1 | 255.255.255.0 | NULL
>>| NULL | ExternalGuestNetworkGuru | 205 | 7 | r-7-VM
>>| Expunging | DomainRouter |
>>| 15 | 2014-03-17 11:27:52 | NULL | NULL | NULL
>>| NULL | ControlNetworkGuru | 202 | 7 | r-7-VM
>>| Expunging | DomainRouter |
>>| 16 | 2014-03-17 11:27:52 | 10.193.17.190 | 255.255.255.0 | 10.193.17.1
>>| NULL | PublicNetworkGuru | 200 | 7 | r-7-VM
>>| Expunging | DomainRouter |
>>| 26 | 2014-03-18 08:11:16 | 10.124.99.1 | 255.255.255.0 | NULL
>>| NULL | ExternalGuestNetworkGuru | 205 | 18 | r-18-VM
>>| Expunging | DomainRouter |
>>| 27 | 2014-03-18 08:11:16 | NULL | NULL | NULL
>>| NULL | ControlNetworkGuru | 202 | 18 | r-18-VM
>>| Expunging | DomainRouter |
>>| 28 | 2014-03-18 08:11:16 | 10.193.17.190 | 255.255.255.0 | 10.193.17.1
>>| NULL | PublicNetworkGuru | 200 | 18 | r-18-VM
>>| Expunging | DomainRouter |
>>| 29 | NULL | 10.124.99.1 | 255.255.255.0 | NULL
>>| NULL | ExternalGuestNetworkGuru | 205 | 19 | r-19-VM
>>| Stopped | DomainRouter |
>>| 30 | NULL | NULL | NULL | NULL
>>| NULL | ControlNetworkGuru | 202 | 19 | r-19-VM
>>| Stopped | DomainRouter |
>>| 31 | NULL | 10.193.17.190 | 255.255.255.0 | 10.193.17.1
>>| NULL | PublicNetworkGuru | 200 | 19 | r-19-VM
>>| Stopped | DomainRouter |
>>+----+---------------------+---------------+---------------+-------------+
>>---------+--------------------------+------------+-------------+---------+
>>-----------+--------------+
>>
>>mysql> select * from router_network_ref;
>>+----+-----------+------------+------------+
>>| id | router_id | network_id | guest_type |
>>+----+-----------+------------+------------+
>>| 1 | 4 | 204 | Isolated |
>>| 2 | 7 | 205 | Isolated |
>>| 3 | 18 | 205 | Isolated |
>>| 4 | 19 | 205 | Isolated |
>>+----+-----------+------------+------------+
>>
>>
>>
>>Alena Prokharchyk <[email protected]> wrote:
>>>
>>> The error happens not because Ip is null, but because the nic in a
>>>certain
>>> network can¹t be found. Looks like there is some bug in VPC nic
>>> plug/unplug for Guest networks process.
>>>
>>> Kambiz, please do the following to fix it:
>>>
>>> 1) Stop the MS
>>> 2) Take the DB dump of cloud db in case you have to revert back.
>>> 3) Run the query:
>>>
>>> select * from router_network_ref where router_id=<id of your VR) and
>>> network_id not in (select network_id from nics where instance_id=<ID of
>>> your VR> and removed is null);
>>>
>>> It will give you the list of networks refs that somehow weren¹t cleaned
>>> during the nic detach. Remove the entry returned from router_network_ref
>>> table.
>>>
>>> Let me know how it works.
>>>
>>> -Alena.
>>>
>>>
>>> On 3/21/14, 3:36 PM, "Kambiz Darabi" <[email protected]> wrote:
>>>
>>>>Hello,
>>>>
>>>>as this is my first post to the list, I would like to thank all
>>>>contributors for Cloudstack which I use since last fall without any
>>>>problems. I run 4.1.1 with KVM and advanced networking.
>>>>
>>>>After a restart of the management server (stopping and starting the java
>>>>process), the virtual domain router doesn't start and
>>>>management-server.log shows a NullPointerException in
>>>>NetworkModelImpl.getIpInNetwork (cf. stack trace below).
>>>>
>>>>By putting the server in debug mode and remote debugging, I found out
>>>>that the reason is a row in the table nics which has NULL in ip (cf. row
>>>>with id 30 in the result of the select statement below).
>>>>
>>>>What can I do to quickly solve this problem? Any pointers or suggestions
>>>>are appreciated as the system is currently unusable.
>>>>
>>>>Thank you for your help
>>>>
>>>>
>>>>Kambiz
>>>>
>>>>
>>>>management-server.log:
>>>>
>>>>2014-03-18 10:03:27,151 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking VirtualRouter to prepare for
>>>>Nic[29-19-30e229ba-21bd-4ab5-8570-9f495bce5019-10.124.99.1]
>>>>2014-03-18 10:03:27,151 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking Ovs to prepare for
>>>>Nic[29-19-30e229ba-21bd-4ab5-8570-9f495bce5019-10.124.99.1]
>>>>2014-03-18 10:03:27,151 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking SecurityGroupProvider to prepare for
>>>>Nic[29-19-30e229ba-21bd-4ab5-8570-9f495bce5019-10.124.99.1]
>>>>2014-03-18 10:03:27,151 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking VpcVirtualRouter to prepare for
>>>>Nic[29-19-30e229ba-21bd-4ab5-8570-9f495bce5019-10.124.99.1]
>>>>2014-03-18 10:03:27,151 WARN [network.element.VpcVirtualRouterElement]
>>>>(Job-Executor-1:job-176) Network Ntwk[205|Guest|8] is not associated
>>>>with
>>>>any VPC
>>>>2014-03-18 10:03:27,151 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking NiciraNvp to prepare for
>>>>Nic[29-19-30e229ba-21bd-4ab5-8570-9f495bce5019-10.124.99.1]
>>>>2014-03-18 10:03:27,151 DEBUG [network.element.NiciraNvpElement]
>>>>(Job-Executor-1:job-176) Checking if NiciraNvpElement can handle service
>>>>Connectivity on network net1
>>>>2014-03-18 10:03:27,153 DEBUG [cloud.network.NetworkModelImpl]
>>>>(Job-Executor-1:job-176) Service SecurityGroup is not supported in the
>>>>network id=205
>>>>2014-03-18 10:03:27,156 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Lock is acquired for network id 202 as a part
>>>>of
>>>>network implement
>>>>2014-03-18 10:03:27,156 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Network id=202 is already implemented
>>>>2014-03-18 10:03:27,157 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Lock is released for network id 202 as a part
>>>>of
>>>>network implement
>>>>2014-03-18 10:03:27,187 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking VirtualRouter to prepare for
>>>>Nic[30-19-30e229ba-21bd-4ab5-8570-9f495bce5019-169.254.3.99]
>>>>2014-03-18 10:03:27,187 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking Ovs to prepare for
>>>>Nic[30-19-30e229ba-21bd-4ab5-8570-9f495bce5019-169.254.3.99]
>>>>2014-03-18 10:03:27,187 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking SecurityGroupProvider to prepare for
>>>>Nic[30-19-30e229ba-21bd-4ab5-8570-9f495bce5019-169.254.3.99]
>>>>2014-03-18 10:03:27,187 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking VpcVirtualRouter to prepare for
>>>>Nic[30-19-30e229ba-21bd-4ab5-8570-9f495bce5019-169.254.3.99]
>>>>2014-03-18 10:03:27,187 WARN [network.element.VpcVirtualRouterElement]
>>>>(Job-Executor-1:job-176) Network Ntwk[202|Control|3] is not associated
>>>>with any VPC
>>>>2014-03-18 10:03:27,188 DEBUG [cloud.network.NetworkManagerImpl]
>>>>(Job-Executor-1:job-176) Asking NiciraNvp to prepare for
>>>>Nic[30-19-30e229ba-21bd-4ab5-8570-9f495bce5019-169.254.3.99]
>>>>2014-03-18 10:03:27,188 DEBUG [network.element.NiciraNvpElement]
>>>>(Job-Executor-1:job-176) Checking if NiciraNvpElement can handle service
>>>>Connectivity on network null
>>>>2014-03-18 10:03:27,190 DEBUG [cloud.storage.StorageManagerImpl]
>>>>(Job-Executor-1:job-176) Checking if we need to prepare 1 volumes for
>>>>VM[DomainRouter|r-19-VM]
>>>>2014-03-18 10:03:27,190 DEBUG [cloud.storage.StorageManagerImpl]
>>>>(Job-Executor-1:job-176) No need to recreate the volume:
>>>>Vol[24|vm=19|ROOT], since it already has a pool assigned: 200, adding
>>>>disk to VM
>>>>2014-03-18 10:03:27,224 DEBUG
>>>>[network.router.VirtualNetworkApplianceManagerImpl]
>>>>(Job-Executor-1:job-176) Boot Args for VM[DomainRouter|r-19-VM]:
>>>>template=domP name=r-19-VM eth2ip=10.193.17.190 eth2mask=255.255.255.0
>>>>gateway=10.193.17.1 eth0ip=10.124.99.1 eth0mask=255.255.255.0
>>>>domain=cs6cloud.internal dhcprange=10.124.99.1 eth0ip=169.254.3.99
>>>>eth0mask=255.255.0.0 type=router disable_rp_filter=true dns1=10.193.17.1
>>>>2014-03-18 10:03:27,343 DEBUG
>>>>[network.router.VirtualNetworkApplianceManagerImpl]
>>>>(Job-Executor-1:job-176) Found 8 ip(s) to apply as a part of domR
>>>>VM[DomainRouter|r-19-VM] start.
>>>>2014-03-18 10:03:27,415 DEBUG
>>>>[network.router.VirtualNetworkApplianceManagerImpl]
>>>>(Job-Executor-1:job-176) Resending ipAssoc, port forwarding, load
>>>>balancing rules as a part of Virtual router start
>>>>2014-03-18 10:03:27,499 DEBUG
>>>>[network.router.VirtualNetworkApplianceManagerImpl]
>>>>(Job-Executor-1:job-176) Found 12 firewall Egress rule(s) to apply as a
>>>>part of domR VM[DomainRouter|r-19-VM] start.
>>>>2014-03-18 10:03:27,593 ERROR [cloud.vm.VirtualMachineManagerImpl]
>>>>(Job-Executor-1:job-176) Failed to start instance
>>>>VM[DomainRouter|r-19-VM]
>>>>java.lang.NullPointerException
>>>> at
>>>>com.cloud.network.NetworkModelImpl.getIpInNetwork(NetworkModelImpl.java:
>>>>76
>>>>3)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.finalizeNetw
>>>>or
>>>>kRulesForNetwork(VirtualNetworkApplianceManagerImpl.java:2346)
>>>> at
>>>>com.cloud.network.router.VpcVirtualNetworkApplianceManagerImpl.finalizeN
>>>>et
>>>>workRulesForNetwork(VpcVirtualNetworkApplianceManagerImpl.java:928)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.finalizeComm
>>>>an
>>>>dsOnStart(VirtualNetworkApplianceManagerImpl.java:2241)
>>>> at
>>>>com.cloud.network.router.VpcVirtualNetworkApplianceManagerImpl.finalizeC
>>>>om
>>>>mandsOnStart(VpcVirtualNetworkApplianceManagerImpl.java:767)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.finalizeDepl
>>>>oy
>>>>ment(VirtualNetworkApplianceManagerImpl.java:2205)
>>>> at
>>>>com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManage
>>>>rI
>>>>mpl.java:763)
>>>> at
>>>>com.cloud.vm.VirtualMachineManagerImpl.start(VirtualMachineManagerImpl.j
>>>>av
>>>>a:471)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.start(Virtua
>>>>lN
>>>>etworkApplianceManagerImpl.java:2616)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.startVirtual
>>>>Ro
>>>>uter(VirtualNetworkApplianceManagerImpl.java:1824)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.startRouters
>>>>(V
>>>>irtualNetworkApplianceManagerImpl.java:1924)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.deployVirtua
>>>>lR
>>>>outerInGuestNetwork(VirtualNetworkApplianceManagerImpl.java:1902)
>>>> at
>>>>com.cloud.network.element.VirtualRouterElement.implement(VirtualRouterEl
>>>>em
>>>>ent.java:175)
>>>> at
>>>>com.cloud.network.NetworkManagerImpl.implementNetworkElementsAndResource
>>>>s(
>>>>NetworkManagerImpl.java:1518)
>>>> at
>>>>com.cloud.network.NetworkManagerImpl.implementNetwork(NetworkManagerImpl
>>>>.j
>>>>ava:1434)
>>>> at
>>>>com.cloud.utils.component.ComponentInstantiationPostProcessor$Intercepto
>>>>rD
>>>>ispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>>>> at
>>>>com.cloud.network.NetworkManagerImpl.startNetwork(NetworkManagerImpl.jav
>>>>a:
>>>>2435)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.startRouter(
>>>>Vi
>>>>rtualNetworkApplianceManagerImpl.java:2855)
>>>> at
>>>>com.cloud.network.router.VirtualNetworkApplianceManagerImpl.startRouter(
>>>>Vi
>>>>rtualNetworkApplianceManagerImpl.java:2824)
>>>> at
>>>>com.cloud.utils.component.ComponentInstantiationPostProcessor$Intercepto
>>>>rD
>>>>ispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>>>> at
>>>>org.apache.cloudstack.api.command.admin.router.StartRouterCmd.execute(St
>>>>ar
>>>>tRouterCmd.java:103)
>>>>
>>>>
>>>>table nics:
>>>>
>>>>mysql> select * from nics where reserver_name = 'ControlNetworkGuru';
>>>>+----+--------------------------------------+-------------+-------------
>>>>--
>>>>----+---------------+-------------+-------------+---------+-------------
>>>>--
>>>>+------------+--------+--------------+----------+--------------------+--
>>>>--
>>>>----------------------------------+-----------+---------------------+---
>>>>--
>>>>----------+-------------+-------------+--------------------+------------
>>>>--
>>>>-------+---------------------+-------------+----------+
>>>>| id | uuid | instance_id | mac_address
>>>> | ip4_address | netmask | gateway | ip_type |
>>>>broadcast_uri
>>>>| network_id | mode | state | strategy | reserver_name |
>>>>reservation_id | device_id | update_time |
>>>>isolation_uri | ip6_address | default_nic | vm_type | created
>>>> | removed | ip6_gateway | ip6_cidr |
>>>>+----+--------------------------------------+-------------+-------------
>>>>--
>>>>----+---------------+-------------+-------------+---------+-------------
>>>>--
>>>>+------------+--------+--------------+----------+--------------------+--
>>>>--
>>>>----------------------------------+-----------+---------------------+---
>>>>--
>>>>----------+-------------+-------------+--------------------+------------
>>>>--
>>>>-------+---------------------+-------------+----------+
>>>>| 2 | 289aacb8-cfd7-4879-a632-6cfbda36cbf4 | 1 |
>>>>0e:00:a9:fe:00:55 | 169.254.0.85 | 255.255.0.0 | 169.254.0.1 | Ip4
>>>>|
>>>>NULL | 202 | Static | Reserved | Start |
>>>>ControlNetworkGuru | 993864b4-9dde-47d6-8fd6-cf94050442c6 | 0 |
>>>>2014-03-17 22:21:38 | NULL | NULL | 0 |
>>>>SecondaryStorageVm | 2013-09-06 12:44:42 | NULL | NULL
>>>> | NULL |
>>>>| 6 | 5fdf4b1a-b90c-4c79-9d42-9eaf87eaa042 | 2 |
>>>>0e:00:a9:fe:02:d3 | 169.254.2.211 | 255.255.0.0 | 169.254.0.1 | Ip4
>>>>|
>>>>NULL | 202 | Static | Reserved | Start |
>>>>ControlNetworkGuru | 852e0a65-c72a-448f-ac71-2bb3549a5a41 | 0 |
>>>>2014-03-17 22:21:38 | NULL | NULL | 0 |
>>>>ConsoleProxy | 2013-09-06 12:44:42 | NULL | NULL
>>>> | NULL |
>>>>| 10 | 4c4e6368-95d7-419a-a9b3-a5bb394197f0 | 4 | NULL
>>>> | NULL | NULL | NULL | NULL | NULL
>>>>| 202 | Static | Deallocating | Start | ControlNetworkGuru |
>>>>c28e8ddc-c106-462e-96c8-5d5216dad9b7 | 1 | 2014-03-17 12:27:58 |
>>>>NULL | NULL | 0 | DomainRouter |
>>>>2013-09-10 08:08:39 | 2014-03-17 11:27:58 | NULL | NULL |
>>>>| 15 | 1f2e99c0-9cd9-47aa-ab10-f190efd7a2dc | 7 | NULL
>>>> | NULL | NULL | NULL | NULL | NULL
>>>>| 202 | Static | Deallocating | Start | ControlNetworkGuru |
>>>>ca1aa99e-e630-4533-9642-523d8a8b1fea | 1 | 2014-03-17 12:27:52 |
>>>>NULL | NULL | 0 | DomainRouter |
>>>>2013-09-12 10:58:03 | 2014-03-17 11:27:52 | NULL | NULL |
>>>>| 27 | 1c98c4f2-f604-4a38-a813-f68833b1d250 | 18 | NULL
>>>> | NULL | NULL | NULL | NULL | NULL
>>>>| 202 | Static | Deallocating | Start | ControlNetworkGuru |
>>>>ad8e0e50-72aa-4c68-8634-8dc89f12fe01 | 1 | 2014-03-18 09:11:16 |
>>>>NULL | NULL | 0 | DomainRouter |
>>>>2014-03-17 11:28:50 | 2014-03-18 08:11:16 | NULL | NULL |
>>>>| 30 | cabd4cd9-c39f-423f-ad6a-ee3affe0bd9d | 19 | NULL
>>>> | NULL | NULL | NULL | NULL | NULL
>>>>| 202 | Static | Allocated | Start | ControlNetworkGuru |
>>>>e81ba56d-a101-4c60-b44f-a0890d56aad9 | 1 | 2014-03-18 09:11:44 |
>>>>NULL | NULL | 0 | DomainRouter |
>>>>2014-03-18 08:11:32 | NULL | NULL | NULL |
>>>>+----+--------------------------------------+-------------+-------------
>>>>--
>>>>----+---------------+-------------+-------------+---------+-------------
>>>>--
>>>>+------------+--------+--------------+----------+--------------------+--
>>>>--
>>>>----------------------------------+-----------+---------------------+---
>>>>--
>>>>----------+-------------+-------------+--------------------+------------
>>>>--
>>>>-------+---------------------+-------------+----------+
>>>>
>>>>