I was thinking of doing that, however it does not solve the problem for current users running Eureka in DC so that's why I came with this patch which is the first one.

Then, my idea was to open a new issue and fix it by implementing a new interface.
That interface will have a Type, Name and will implement isRegistrable as you said.

Once we will have that interface, we could then add another if to check for that new interface. However returning false for the default DataCenterInfo seems wrong to me since Eureka is not doing what it was designed to do.

Without this patch, everybody running in DC is at risk. After an Eureka re-start, the Eureka node will just never accept the renew of the lease.
So as an example:
- Client1 register with Eureka1 for Service S1
- Client1 renew with Eureka 2 for S1
- Eureka3 goes down
- Client1 renew with Eureka1 or Eureka2 for S1
- Eureka3 get back online
- Eureka3 will reject all existing node <-- Default is to return false
- Client3 talk to Eureka3 and ask for service S1
---> Eureka3 will return an **empty list** even if Client1 is actually registered on Eureka 1 and 2

**Instead** what everybody is expecting to get the Client1 information.

Nobody expect this to be the default for Eureka. With this patch we can still return false if that what we want but I'm not sure why you'll want that?

So I can work on getting a new clean interface out but no matter what, the current code is not working for DC and should be fixed first.
Then we can add a new if ( XXX instanceOf YYYY) check to implement something more like AmazonInfo but for data centers.

My answer will have been different if Java8 was in use everywhere since we could have play with the default implementation but this is not yet an option.