diff --git a/includes/commerce.controller.inc b/includes/commerce.controller.inc
index 5605f67..51ffa5e 100644
--- a/includes/commerce.controller.inc
+++ b/includes/commerce.controller.inc
@@ -24,11 +24,25 @@ class DrupalCommerceEntityController extends DrupalDefaultEntityController imple
    * Override of DrupalDefaultEntityController::buildQuery().
    *
    * Handle pessimistic locking.
+   * To load a readonly entity, e.g order, pass: $conditions['readonly'] = TRUE 
    */
   protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
+
+    // By default DrupalCommerceEntityController will use pessimistic locking when loading orders
+    // Setting a $conditions['readonly'] = TRUE flag to commerce_order_load or commerce_order_load_multiple
+    // will load an order readonly, without locking the table
+    if(isset($conditions['readonly']) && $conditions['readonly']){
+      $readonly = TRUE;
+      // Unset condition flag else 
+      // is interpreted as db field condition by parent:buildQuery
+      unset($conditions['readonly']);
+    }else{
+      $readonly = FALSE;
+    }
+    
     $query = parent::buildQuery($ids, $conditions, $revision_id);
 
-    if (isset($this->entityInfo['locking mode']) && $this->entityInfo['locking mode'] == 'pessimistic') {
+    if ($readonly === FALSE && isset($this->entityInfo['locking mode']) && $this->entityInfo['locking mode'] == 'pessimistic') {
       // In pessimistic locking mode, we issue the load query with a FOR UPDATE
       // clause. This will block all other load queries to the loaded objects
       // but requires us to start a transaction.
diff --git a/modules/order/commerce_order.module b/modules/order/commerce_order.module
index 962d038..a4c2fcd 100644
--- a/modules/order/commerce_order.module
+++ b/modules/order/commerce_order.module
@@ -733,8 +733,8 @@ function commerce_order_save($order) {
 /**
  * Loads an order by ID.
  */
-function commerce_order_load($order_id) {
-  $orders = commerce_order_load_multiple(array($order_id), array());
+function commerce_order_load($order_id, $conditions = array()) {
+  $orders = commerce_order_load_multiple(array($order_id), $conditions);
   return $orders ? reset($orders) : FALSE;
 }
 
