РЕШЕНО select запросы в drupal commerce

Главные вкладки

Аватар пользователя mozh mozh 23 ноября 2016 в 12:26

Всем привет. Имеется сайт с commerce. вечером сайт грузился по 2-3 минуты в логах обнаружено это:

PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction: SELECT revision.order_number AS order_number, revision.revision_id AS revision_id, revision.revision_uid AS revision_uid, revision.mail AS mail, revision.status AS status, revision.log AS log, revision.revision_timestamp AS revision_timestamp, revision.revision_hostname AS revision_hostname, revision.data AS data, base.order_id AS order_id, base.type AS type, base.uid AS uid, base.created AS created, base.changed AS changed, base.hostname AS hostname FROM {commerce_order} base INNER JOIN {commerce_order_revision} revision ON revision.revision_id = base.revision_id WHERE (base.order_id IN (:db_condition_placeholder_0, :db_condition_placeholder_1, :db_condition_placeholder_2, :db_condition_placeholder_3, :db_condition_placeholder_4, :db_condition_placeholder_5, :db_condition_placeholder_6, :db_condition_placeholder_7, :db_condition_placeholder_8, :db_condition_placeholder_9, :db_condition_placeholder_10, :db_condition_placeholder_11, :db_condition_placeholder_12, :db_condition_placeholder_13, :db_condition_placeholder_14, :db_condition_placeholder_15, :db_condition_placeholder_16, :db_condition_placeholder_17, :db_condition_placeholder_18, :db_condition_placeholder_19, :db_condition_placeholder_20, :db_condition_placeholder_21, :db_condition_placeholder_22, :db_condition_placeholder_23, :db_condition_placeholder_24, :db_condition_placeholder_25, :db_condition_placeholder_26, :db_condition_placeholder_27, :db_condition_placeholder_28, :db_condition_placeholder_29, :db_condition_placeholder_30, :db_condition_placeholder_31, :db_condition_placeholder_32, :db_condition_placeholder_33, :db_condition_placeholder_34, :db_condition_placeholder_35, :db_condition_placeholder_36, :db_condition_placeholder_37, :db_condition_placeholder_38, :db_condition_placeholder_39, :db_condition_placeholder_40, :db_condition_placeholder_41, :db_condition_placeholder_42, :db_condition_placeholder_43, :db_condition_placeholder_44, :db_condition_placeholder_45, :db_condition_placeholder_46, :db_condition_placeholder_47, :db_condition_placeholder_48, :db_condition_placeholder_49)) FOR UPDATE; Array ( [:db_condition_placeholder_0] => 1277 [:db_condition_placeholder_1] => 1270 [:db_condition_placeholder_2] => 1268 [:db_condition_placeholder_3] => 1267 [:db_condition_placeholder_4] => 1266 [:db_condition_placeholder_5] => 1265 [:db_condition_placeholder_6] => 1263 [:db_condition_placeholder_7] => 1254 [:db_condition_placeholder_8] => 1251 [:db_condition_placeholder_9] => 1249 [:db_condition_placeholder_10] => 1248 [:db_condition_placeholder_11] => 1247 [:db_condition_placeholder_12] => 1246 [:db_condition_placeholder_13] => 1245 [:db_condition_placeholder_14] => 1244 [:db_condition_placeholder_15] => 1243 [:db_condition_placeholder_16] => 1242 [:db_condition_placeholder_17] => 1241 [:db_condition_placeholder_18] => 1239 [:db_condition_placeholder_19] => 1238 [:db_condition_placeholder_20] => 1237 [:db_condition_placeholder_21] => 1235 [:db_condition_placeholder_22] => 1234 [:db_condition_placeholder_23] => 1233 [:db_condition_placeholder_24] => 1229 [:db_condition_placeholder_25] => 1228 [:db_condition_placeholder_26] => 1227 [:db_condition_placeholder_27] => 1226 [:db_condition_placeholder_28] => 1220 [:db_condition_placeholder_29] => 1219 [:db_condition_placeholder_30] => 1217 [:db_condition_placeholder_31] => 1212 [:db_condition_placeholder_32] => 1211 [:db_condition_placeholder_33] => 1210 [:db_condition_placeholder_34] => 1209 [:db_condition_placeholder_35] => 1208 [:db_condition_placeholder_36] => 1207 [:db_condition_placeholder_37] => 1201 [:db_condition_placeholder_38] => 1199 [:db_condition_placeholder_39] => 1197 [:db_condition_placeholder_40] => 1195 [:db_condition_placeholder_41] => 1196 [:db_condition_placeholder_42] => 1194 [:db_condition_placeholder_43] => 1190 [:db_condition_placeholder_44] => 1189 [:db_condition_placeholder_45] => 1188 [:db_condition_placeholder_46] => 1187 [:db_condition_placeholder_47] => 1186 [:db_condition_placeholder_48] => 1183 [:db_condition_placeholder_49] => 1184 ) in DrupalDefaultEntityController->load() (line 199 of /home/site-admin/site.com/includes/entity.inc).
что за зверь такой?

UPD
проблема была с блокировкой таблицы commerce_order
если что-то долго делаете в хуке HOOK_commerce_order_presave($order) , то все это время таблица с заказами будет заблокирована и если кто-то туда стучиться, то он получит ошибку как выше
проблему решил так

<?php/**
 * Implements hook_entity_info_alter().
 */
function HOOK_entity_info_alter(&$entity_info) {
  // Altering Commerce entities to NOT use "pessimistic" locking
  $entity_types = ['commerce_order'];
  foreach ($entity_types as $type) {
    $entity_info[$type]['locking mode'] = 'optimistic';//по умолчанию pessimistic
  }
}?>

есть еще блокировка между commerce_order_load и commerce_order_save