**Apache Airflow version**: 2.0.1


**Kubernetes version (if you are using kubernetes)** (use `kubectl version`): 1.16

**Environment**:

- **Cloud provider or hardware configuration**:
- **OS** (e.g. from /etc/os-release):
- **Kernel** (e.g. `uname -a`):
- **Install tools**:
- **Others**:

**What happened**:

Airflow fails to schedule any tasks after some time. The "Task Instance Details" tab of some of the failed tasks show the following: 

```
('Not scheduling since there are %s open slots in pool %s and require %s pool slots', -3, 'transformation', 3)
```

Admin > Pools tab shows 0 Running Slots but 9 Queued Slots. Gets stuck in this state until airflow is restarted.

**What you expected to happen**:

Number of "open slots in pool" should never be negative! 

**How to reproduce it**:
- Create/configure a pool with a small size (eg. 6)
- DAG with multiple tasks occupying multiple pool_slots (eg. pool_slots=3)


**Anything else we need to know**:

airflow/models/pool.py
return str(self.pool)  
    @staticmethod
    @provide_session
    def get_pool(pool_name, session: Session = None):
        """
        Get the Pool with specific pool name from the Pools.
        :param pool_name: The pool name of the Pool to get.
        :param session: SQLAlchemy ORM Session
        :return: the pool object
        """
        return session.query(Pool).filter(Pool.pool == pool_name).first()
    @staticmethod
    @provide_session
    def get_default_pool(session: Session = None):
        """
        Get the Pool of the default_pool from the Pools.
        :param session: SQLAlchemy ORM Session
        :return: the pool object
        """
        return Pool.get_pool(Pool.DEFAULT_POOL_NAME, session=session)
    @staticmethod
    @provide_session
    def slots_stats(