| Summary: | Detect connection loops in configuration | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Community] GlusterFS | Reporter: | Gordan Bobic <gordan> | ||||
| Component: | unclassified | Assignee: | Vijay Bellur <vbellur> | ||||
| Status: | CLOSED CURRENTRELEASE | QA Contact: | |||||
| Severity: | low | Docs Contact: | |||||
| Priority: | low | ||||||
| Version: | 2.0.2 | CC: | aavati, amarts, gluster-bugs, raghavendra, shehjart, vijay | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | Type: | --- | |||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Attachments: |
|
||||||
|
Description
Gordan Bobic
2009-07-08 21:29:58 UTC
There was a patch submitted by gowda and accepted regarding a memory leak in logging. http://patches.gluster.com/patch/679/ The commit id is 8d74fe9ba6c3c2f68f71cacd56fad9328b8b0090 Can this fix the leak observed above? regards, Raghavendra The patch is for 2.1 development branch. 2.0.3 does not contain the code in which leak was fixed. Sorry for confusion. I did a bit more research, and I have to apologize - the mount parameters were a complete red herring. I just reproduced the issue with both sets of parameters, that isn't what causes the leak. The condition that appears to cause the leak is actually a misconfiguration. Have a look at the attached spec file. Run this spec file on the machine that has the IP address 10.2.0.11. This causes the machine to talk to the local file system and talk to itself as the peer. This is clearly an error condition, but rather than failing or ignoring this, glusterfsd proceeds to bloat until it uses up all memory and OOMs. So, it looks like this edge/error case both works when it should abort and leaks copious amounts of memory in the process.
> This is clearly an error condition, but rather than failing or ignoring this,
> glusterfsd proceeds to bloat until it uses up all memory and OOMs. So, it looks
> like this edge/error case both works when it should abort and leaks copious
> amounts of memory in the process.
Fixing this would be a bit tricky since GlusterFS legally permits local connections (and in fact optimizes such connections by converting them to local function calls). It would be a bit tricky to differentiate good local connections against such mistakes.
Avati
How about giving each server instance a (pseudo-unique) "ID", and rejecting the connection when two "server" instances have the same ID? Perhaps something based on the MAC of the first NIC, concatenated with the PID of the server process, and perhaps concatenated with underlying storage path or similar? I'm not sure how this would all interact in the case where a single process serves multiple server and/or client instances, though. Hi Gordon, We're now recommending the use of glusterfs-volgen to generate volume specs, which does a better job of preventing such loops. Are you able to avoid the problematic config by using the volgen tool? I am trying to determine if this bug can be closed with the introduction of glusterfs-volgen tool. Thanks I guess volgen is a somewhat mitigating circumstance, but I'm concerned about configuration error conditions like this not getting caught at start time. (In reply to comment #7) > I guess volgen is a somewhat mitigating circumstance, but I'm concerned about > configuration error conditions like this not getting caught at start time. Since 3.1, we support only configurations generated by gluster command line and hence there is no possibility of having loops in configuration. |