= Computer identification = == How computers are identified == We haven't found a universal hardware-level mechanism (CPU chip ID, MAC address) for uniquely identifying computers. So we do it in software as follows: When a computer first contacts a project's scheduling server, the server creates a database record for the computer , which includes a host ID and an RPC sequence number. The computer ID and the RPC sequence number are also stored in the client's `client_state.xml` file. The client increments the RPC sequence number on each scheduler request. If the scheduling server receives an RPC with a sequence number less than the expected sequence number (usually indicating that the user has copied the `client_state.xml` file between computers) it creates a new database record and returns a new ID. == Merging duplicate computer records == This mechanism can lead to situations where a project's server has multiple database records for a single computer. For example, this will occur if the user deletes the `client_state.xml` file. The user can merge these duplicates into a single record via a web interface. You may only merge two computer records if * They have the same processor type (Intel, AMD etc.) and operating system. * They don't overlap in time; i.e. computer 1's last RPC happened before computer 2's first RPC, or vice-versa. There are two ways of merging computer records: * To merge a single computer, open its Summary page, and click on "Merge this computer". You will see a list of computers eligible to be merged with this one, and you can select any or all of them. * The "Your computers" page has a link '''Merge computers by name'''. This feature lets you automatically merge all eligible computers having the same domain name. This is handy if you run a "computer farm" and periodically reformat all the drives. == Alternate identification method at World Community Grid == In absence of a merge feature at this project, WCG introduced an alternate method called ''host matching'' to recognise previously existing devices to prevent new / duplicate registrations. For that the server compares standard information exchanged during server-client communications being: * user name * domain_name * ip_addr (the ip of the client on the local network) * operating system name * processor vendor * memory The most recent record that matches this critiera (if found) will be re-used. It will cancel any results currently assigned to the client, and then issue new work. This is because a user might be trying to clear out some work that was causing some form of trouble. If any of this information is hidden through for instance setting the flag in the cc_config.xml file suppressing the IP address or domain_name, the method fails and will create a new device registration.