Skip to content

Error "too many open files" on ReadHoldingRegisters for RTUClient #74

@hubertat

Description

@hubertat

Hi, I'm getting too many open files error when reading from RTUClient handler.

It happens when program is running for quite a long time.
Example code below, please note that RTUClientHandler is created only once and exists for whole lifetime of my program.
As you can see below, connection is closed (by defer) after each reading attempt. I'm not doing any concurrent readings.

func (qd *rtuDevice) Read() (err error) {
	err = qd.modbusHandler.Connect()
	defer qd.modbusHandler.Close()
	if err != nil {
		return
	}

	client := modbus.NewClient(qd.modbusHandler)
	var results []byte
	results, err = client.ReadHoldingRegisters(0, 62)
	if err != nil {
		return
	}

	qd.Data = &DataObject{}
	buf := bytes.NewReader(results)
	err = binary.Read(buf, binary.BigEndian, qd.Data)
	if err != nil {
		return
	}

	return
}

I think it's a bug, if it's not and it can be avoided please advise.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions