PROCAP Ltd was founded in 1963 by Mr. Maurice Magien, a man of principles and great values. Eager to share the knowledge acquired in France at EUGENE PERMA, known at the time as PERMA of PARIS, he left his native France with his wife and daughter to establish himself in Canada, in the province of Quebec, more precisely in Montreal.
Upon arrival, Mr. Magien starts his new business, offering a wide range of different PERMA of PARIS products to the hairdressing professionals, who quickly discover the exceptional quality and cosmetics attributes of this brand. The list of customers expands daily as the business is quickly gaining in popularity. Gradually, he surrounds himself with a team who shares the company's values, contributing to its growth, both in Quebec and in Canada. Respecting the hairdressing industry, its professionals and its shopkeepers, he always maintained a policy of exclusivity toward the capillary professionals practicing their art in the salon.
Today, PROCAP Ltd. enjoys a remarkable market presence in Canada, coast to coast, and pursues the work of its founder, dedicated to the exclusivity of the brand EUGENE PERMA to the hairdressing professionals.
EUGENE PERMA Professionnel has been an expert in the service of hair beauty for almost 100 years.
entirely dedicated to color treatment and hair care, is specialized in the development of professional hair products.
Formulas developed in collaboration with hairdressers and expert colorists.
Shampoo and hair care ranges are tested under dermatological control.
Products are tested by independent, certified laboratories.
The manufacturing plant, located in Reims, aims to respect environment and observes strict production commitments.
The company is founded in 1918 by Eugène Sutter, a hairstylist and hairpiece manufacturer. It develops on the professional hairstyling market and creates three establishments in Paris, London, and Vienna. This international development draws strength from the invention of the "Eugène permanent wave", known as "the perm". Present in 56 countries, EUGENE PERMA Professionnel is a "Made in France" success.


text:
Q: No detection of a touchScreen Button event in a modal window on Android I made a Javafx application that works fine on PC. Now, I try to transfer it to Android Smartphone. To do that, I use JavaFXPorts (Gluon), with Eclipse and Gradle.
Now, I am stuck with a very simple example:
void showPopUp() {
     Button button = new Button("Action do do"));
     HBox.setMargin(button , new Insets(10, 30, 10, 30));

     button .setOnAction(e -> {
            actionToDo();
        });

     Scene scene = new Scene (button, 100, 200);
     Stage stage = new Stage();
     stage.initModality(Modality.APPLICATION_MODAL);
     stage.setScene(scene);
     stage.show();
}

Have you an idea of the reason?
Thanks
Here is the whole code with:

*

*a periodic task (it works fine)

*a delayed task (it works fine)

*a button "btn" that displays the modal PopUp. The touchScreen on it works fine and allows to go to the PopUp

*the PopUp with 2 buttons boutonPopUpA and boutonPopUpB that are added  to the HBOX boutonsMenuPrincipal

*and a stage with its scene "connected to" boutonsMenuPrincipal
In the popUp, boutonPopUpA and boutonPopUpB are displayed but inactive (No generated trace on a touchScreen)
 package com.gluonapplication;

import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class GluonApplication extends Application {

    private int nbAppuiToucheSetOnAction = 0;
    private int nbAppuiTouchePopUp = 0;

    static long BDTapplication = 110;
    static long nbBDT = 0;
    static long t0 = System.currentTimeMillis();

    /********************************************************/
    public static void periodicProcessing(String str) {
        nbBDT++;
        traceWithSystemTime("periodicProcessing of " + str + " / nbBDT: " + nbBDT);
    }

    /********************************************************/
    public static void traceWithSystemTime(String comments) {
            long t =  System.currentTimeMillis();
            long deltaT =t - t0;
           System.out.println("time - t0: " + t0 + " /  t: "+ t + " / detaT: " + deltaT + " ms --- " + comments);
    }

  /********************************************************/
    public void start(Stage primaryStage) {

        primaryStage.setTitle("Hello World sur Android! ");

        // A PERIODIC TASK
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                for (int i=0; i < 10; i++) {
                    periodicProcessing("timer plus");
                }
            }
        };
           final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
           service.scheduleAtFixedRate(runnable, 0, BDTapplication, TimeUnit.MILLISECONDS);

// A DELAYED TASK
        int TASK_DELAY = 1000; // ms
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                for (int i = 0; i < 10; i++) {
                    periodicProcessing("timer task done");
                }
            }
        };

        new Timer().schedule(task, TASK_DELAY);

        AnchorPane root = new AnchorPane();
         root.setVisible(true);
        Scene scene = new Scene(root);

        // *********************** Button
      // btn works fine
        Button btn = new Button();
        btn.setText("setOnAction 1");

        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                nbAppuiToucheSetOnAction++;
               traceWithSystemTime("SETonACTION: nbAppui = "+ nbAppuiToucheSetOnAction);
                showPopUpMenuPrincipal();
         }
        });
        HBox.setMargin(btn, new Insets(10, 30, 10, 30));

        VBox zoneBtn= new VBox();
        VBox.setMargin(zoneBtn, new Insets(30, 5, 1, 10));
        zoneBtn.getChildren().add( btn);
        zoneBtn.setAlignment(Pos.CENTER);

         root.getChildren().addAll(zoneBtn);

         primaryStage.setTitle("Title");

        // ************************************* DISPLAY
        root.requestFocus();
        primaryStage.setScene(scene);
        primaryStage.setTitle("Test4");
        primaryStage.setFullScreen(true);
        primaryStage.show();

       traceWithSystemTime("End of test");

    }

    /*************************************/
void    showPopUpMenuPrincipal(){
    traceWithSystemTime("Beginning of  showPopUpMenuPrincipal");
    Button boutonPopUpA = new Button("setOnAction 2a");
    boutonPopUpA.setOnAction(e-> {
        nbAppuiTouchePopUp++;
       traceWithSystemTime("Action sur setOnAction 2a: nbAppui: " + nbAppuiTouchePopUp);
    });
    Button boutonPopUpB = new Button("setOnAction 2b");
    boutonPopUpB.setOnAction(e-> {
        nbAppuiTouchePopUp++;
       traceWithSystemTime("Action sur setOnAction 2b: nbAppui: " + nbAppuiTouchePopUp);
    });

    HBox.setMargin(boutonPopUpA, new Insets(10, 30, 10, 30));

    VBox zonePopUp= new VBox();
    VBox.setMargin(zonePopUp, new Insets(30, 5, 1, 10));
    zonePopUp.getChildren().add( boutonPopUpA);
    zonePopUp.setAlignment(Pos.CENTER);

    Stage stagePopUpMenu = new Stage();
    stagePopUpMenu.setTitle("Title");
    stagePopUpMenu.initModality(Modality.APPLICATION_MODAL);

    HBox boutonsMenuPrincipal = new HBox();
    boutonsMenuPrincipal.setAlignment(Pos.CENTER);
    boutonsMenuPrincipal.getChildren().addAll( zonePopUp, boutonPopUpB);

    Scene sceneMenu = new Scene(boutonsMenuPrincipal, 400, 250);

    stagePopUpMenu.setOpacity(0.8);
    stagePopUpMenu.setResizable(false);

    stagePopUpMenu.setScene(sceneMenu);
    stagePopUpMenu.show();
    traceWithSystemTime("End of  showPopUpMenuPrincipal");
}

    }

And my build gradle:
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.0.0-b10'
    }
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
    jcenter()
}

mainClassName = 'com.gluonapplication.GluonApplication'

jfxmobile {
    android {
        applicationPackage = 'com.gluonapplication'
        manifest = 'src/android/AndroidManifest.xml'
        androidSdk = 'C:/Users/pascal/AppData/Local/Android/sdk'
        resDirectory = 'src/android/res'
        compileSdkVersion = '23'
        buildToolsVersion = '22.0.1'
    }
    ios {
        infoPList = file('src/ios/Default-Info.plist')
    }
}

A: You need to update the jfxmobile plugin version. Many things have been fixed and updated since the 1.0.0-b10 version (from a year and a half ago).
Currently the version is 1.3.2. It is not only the plugin, but the mainly the javafxports version that the plugin includes.
If you use the Gluon plugin on your favorite IDE, selecting a Single View project you will get the minimum project template and a valid build.gradle file.
This is an updated build script:
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.3.2'
    }
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
    jcenter()
    maven {
        url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
    }
}

mainClassName = 'com.gluonhq.testtouch.TestTouch'

dependencies {
    compile 'com.gluonhq:charm:4.3.0'
}

jfxmobile {
    downConfig {
        version = '3.2.0'
        plugins 'display', 'lifecycle', 'statusbar', 'storage'
    }
    android {
        manifest = 'src/android/AndroidManifest.xml'
    }
}

You can add all your code to the BasicView, deploy it on mobile and test it.
I've just done it and everything works fine: the task runs fast, and the buttons are responsive.
Using JavaFXPorts it's not recommended creating a second Stage. You can use a Dialog (either built-in JavaFX dialog or Gluon Mobile dialog) instead.
You can test Gluon Mobile library for free, you will get only a nag screen at startup.
Anyway, you can remove the Gluon Mobile library (just remove com.gluonhq:charm:4.3.0 from dependencies), and you'll have to port back MobileApplication to a regular JavaFX Application and remove the BasicView class (mostly as you have now).

redpajama_set_name: RedPajamaStackExchange


text:
Q: The maximum recursion 32767 has been exhausted before statement completion. [SQLSTATE 42000] (Error 530) I am using below query to identify blocking on server and send an alert also kill the session (executing via SQL Job).
Query is using 2 CET table Blcokers and Hierarchy.
Many times I am getting below error and the job fails.
Error:
NT SERVICE\SQLSERVERAGENT. The statement terminated. The maximum recursion 32767 has been exhausted before statement completion. [SQLSTATE 42000] (Error 530).  The step failed.
On research I found to use  OPTION(MAXRECURSION) HINT in the query to avid the error.
I have included the HINT for Hierarchy CET table as per below but still getting same error
SELECT * INTO #BlockingProcess
FROM Hierarchy
OPTION(MAXRECURSION 32767)
Can some one please suggest me what changes should I make in the below code to stop the infinite recursion.
ENITER CODE:
SET nocount ON;
SET concat_null_yields_null OFF
go

CREATE TABLE #sp_who2(
    ID INT IDENTITY(1,1) NOT NULL,
    SPID VARCHAR(4),
    Status VARCHAR(200),
    Login VARCHAR(200),
    HostName  VARCHAR(200),
    BlkBy VARCHAR(4),
    DBName VARCHAR(200),
    Command VARCHAR(200),
    CPUTime VARCHAR(20),
    DiskIO VARCHAR(20),
    LastBatch VARCHAR(20),
    ProgramName VARCHAR(200),
    SPID2 VARCHAR(4),
    RequestID VARCHAR(4)
)

INSERT #sp_who2
EXEC sp_who2

--SELECT SPID, BlkBy FROM #sp_who2
DELETE FROM #sp_who2
 WHERE BlkBy='  .'
   AND SPID NOT IN (SELECT BlkBy FROM #sp_who2 WHERE BlkBy IS NOT NULL)

;WITH Hierarchy(ChildSPID,Generation,BlkBy)
AS
(
    SELECT SPID, 0, BlkBy
      FROM #sp_who2 AS FirtGeneration
     WHERE BlkBy='  .'
     UNION ALL
    SELECT NextGeneration.SPID, Parent.Generation+1, Parent.ChildSPID
      FROM #sp_who2 AS NextGeneration
            INNER JOIN Hierarchy AS Parent ON NextGeneration.BlkBy = Parent.ChildSPID
)
SELECT * INTO #BlockingProcess
  FROM Hierarchy
OPTION(MAXRECURSION 32767)

SELECT * FROM #BlockingProcess

--loop and kill lead blockers
DECLARE @SPIDGen0           INT
DECLARE @SPIDGen1           INT
DECLARE @ElapsedTimeMSGen0  INT  --if NULL, use Gen1
DECLARE @ElapsedTimeMSGen1  INT
DECLARE @SUBJECTKILL            VARCHAR(200);
--DECLARE @tableHTMLKILL            NVARCHAR(MAX);

WHILE EXISTS(SELECT * FROM #BlockingProcess WHERE BlkBy='  .')
BEGIN
    SELECT @SPIDGen0=MIN(ChildSPID) FROM #BlockingProcess WHERE Generation=0
    SELECT @SPIDGen1=MIN(ChildSPID) FROM #BlockingProcess WHERE Generation=1 and BlkBy=@SPIDGen0
    PRINT @SPIDGen0
    PRINT @SPIDGen1

    SELECT @ElapsedTimeMSGen0 = BlockingRequest.total_elapsed_time
      FROM sys.dm_exec_requests BlockingRequest
     WHERE session_id=@SPIDGen0

    SELECT @ElapsedTimeMSGen1 = BlockingRequest.total_elapsed_time
      FROM sys.dm_exec_requests BlockingRequest
     WHERE session_id=@SPIDGen1

    PRINT @ElapsedTimeMSGen0
    PRINT @ElapsedTimeMSGen1

--If (select count(*) from #BLOCKERS) >= 1
IF ISNULL(@ElapsedTimeMSGen0,@ElapsedTimeMSGen1) >= 120000
begin
DECLARE @Subject varchar(100)
SELECT @Subject = 'Blocking Tree Report from ' +  @@servername
    EXEC msdb.dbo.sp_send_dbmail @body = @tableHTML
        ,@body_format = 'HTML'
        ,@profile_name = N''
        ,@recipients = N''

        ,@Subject = @Subject
end

drop table #BLOCKERS

WAITFOR DELAY '00:03'

IF ISNULL(@ElapsedTimeMSGen0,@ElapsedTimeMSGen1)>180000 --milliseconds = 3 minutes
    --IF ISNULL(@ElapsedTimeMSGen0,@ElapsedTimeMSGen1)>60000 --milliseconds = 3 minutes
    BEGIN
        SELECT @SUBJECTKILL=@@SERVERNAME+' - Lead Blocker Session '+CAST(@SPIDGen0 AS VARCHAR(5))+' Killed'
        EXEC msdb.dbo.sp_send_dbmail
            @profile_name='',
            @recipients='',

            @subject = @SUBJECTKILL,
            @body = @tableHTML,
            @body_format = 'HTML'

        EXEC('KILL ' + @SPIDGen0)
    END
    --Skip current SPID and move to next SPID
    DELETE FROM #BlockingProcess WHERE ChildSPID = @SPIDGen0
END

IF OBJECT_ID('tempdb..#sp_who2') IS NOT NULL DROP TABLE #sp_who2
IF OBJECT_ID('tempdb..#BlockingProcess') IS NOT NULL DROP TABLE #BlockingProcess

A: Use sp_whoisactive instead. It gives pretty human-readable view of what is going on and what process is process or blocking which others.
Also, you can filter the results by running time and kill the slowest.
But, what you are doing does not seem right. You have automation script for killing transaction. What if one is generated invoice report once per month which take 5 minutes and you constantly kill it? What if one is creating an index which blocks transactions on the specified table and you kill it?
There is a reason there is no such functionality by Microsoft - a person needs to take the call.
It will be better to use this routine to identify slow queries and fix them.

A: I observed that in by above query it was somehow exceeding max recursion when a parallel session blocks itself and it should not be considered are blocking.
So, I avoided that parallel sessions by including  OR SPID=BlkBy in below delete statement
DELETE FROM #sp_who2
 WHERE BlkBy='  .'
   AND SPID NOT IN (SELECT BlkBy FROM #sp_who2 WHERE BlkBy IS NOT NULL)

After this the query started working fine.

A: Thank you for the response.
Apologies for late reply.
I have removed the dependency on CET table since with going into maximum recursion when every the blocking was due to sleeping session and my previous script was not able to identify sleeping session.
I have observed exec_requests dmv does not capture all sleeping sessions and hence some how the script used to reach maximum recursion when there is blocking by sleeping session, since I have Join exec_requests dmv to fetch blocking data.
SOLUTION:
I have replace CET with Temp Table and also replaced  exec_requests dmv with sys.sysprocesses system table. This solved the max recursion issue.
Also, I have added some more filters to kill blocking for sleeping session.
So, now the query kills head blocker if it is an active session and blocking more than 3 min OR if head blocker  is a sleeping session.
Below is the modified full query for your reference. I am sure there will many modification required, please provide suggestions if any.
SET nocount ON;
SET concat_null_yields_null OFF
go

WITH blockers (spid, blocked, level, batch, lastwaittype, status,hostname,cmd,DBNAME,loginname,open_tran,login_time)
     AS (SELECT spid,
                blocked,

                Cast (Replicate ('0', 4-Len (Cast (spid AS VARCHAR)))
                      + Cast (spid AS VARCHAR) AS VARCHAR (1000))         AS
                LEVEL,
                Replace (Replace (T.text, Char(10), ' '), Char (13), ' ') AS
                BATCH,
                R.lastwaittype,
R.status,
                R.hostname,r.cmd,DB_NAME(r.dbid),r.loginame,r.open_tran,r.login_time
         FROM   sys.sysprocesses R WITH (nolock)
                CROSS apply sys.Dm_exec_sql_text(R.sql_handle) T
         WHERE  ( blocked = 0
                   OR blocked = spid )
                AND EXISTS (SELECT spid,
                                   blocked,
                                   Cast (Replicate ('0', 4-Len (Cast (spid AS
                                         VARCHAR
                                         )))
                                         + Cast (spid AS VARCHAR) AS VARCHAR (
                                         1000))
                                   AS
                                       LEVEL,
                                   blocked,
                                   Replace (Replace (T.text, Char(10), ' '),
                                   Char (13
                                   ),
                                   ' ') AS
                                       BATCH,
                                   R.lastwaittype,
  R.status,
                                    R.hostname,r.cmd,DB_NAME(r.dbid),r.loginame,r.open_tran,r.login_time
                            FROM   sys.sysprocesses R2 WITH (nolock)
                                   CROSS apply
                                   sys.Dm_exec_sql_text(R.sql_handle) T
                            WHERE  R2.blocked = R.spid
                                   AND R2.blocked <> R2.spid
                                   AND DB_NAME(r.dbid) NOT IN ('msdb'))
         UNION ALL
         SELECT R.spid,
                R.blocked,
                Cast (blockers.level
                      + RIGHT (Cast ((1000 + R.spid) AS VARCHAR (100)), 4) AS
                      VARCHAR
                      (
                      1000)) AS
                LEVEL,
                Replace (Replace (T.text, Char(10), ' '), Char (13), ' ')
                AS BATCH,
                R.lastwaittype,
R.status,
                R.hostname ,r.cmd,DB_NAME(r.dbid),r.loginame,r.open_tran,r.login_time
         FROM   sys.sysprocesses AS R WITH (nolock)
                CROSS apply sys.Dm_exec_sql_text(R.sql_handle) T
                INNER JOIN blockers
                        ON R.blocked = blockers.spid
         WHERE  R.blocked > 0
                AND R.blocked <> R.spid
                AND DB_NAME(r.dbid) NOT IN ('msdb'))
SELECT N''
       + Replicate (N'|.......', Len (level)/4 - 2)
       + CASE WHEN (Len (level)/4 - 1) = 0 THEN 'HEAD - ' ELSE '|------ ' END +
       Cast (
       spid AS VARCHAR (10)) + ' ' + batch AS BLOCKING_TREE,
  Spid,
  blocked,
       hostname,
  Status,
       lastwaittype, cmd,DBNAME,loginname,open_tran,login_time,
       Getdate()                           AS 'RunTime' ,
       level
 --(Select convert(varchar, total_elapsed_time /60000 ) + ':' + right('0' + convert(varchar(2), (total_elapsed_time /1000) % 60 ),2 )   from sys.dm_Exec_requests) as StartedSince
INTO  #BLOCKERS
FROM   blockers WITH (nolock)
ORDER  BY level ASC

--select * from #BLOCKERS

    DECLARE @tableHTML NVARCHAR(MAX);

    SET @tableHTML = N'
Blocking Tree Report
' + N'
' + N'
' +
    N'Blocking_Tree	' + N'hostname	' + N'Status	' + N'lastwaittype	'+'CurrentTime	'
    + N'cmd	'
    + N'DatabaseName	'
    + N'loginname	'
    + N'open_tran	'
    + N'login_time	'
    + '
' + CAST((
SELECT td = Blocking_Tree,'',
         td =hostname,'',
td =Status,'',
         td =lastwaittype,'',
         td =RunTime,'',
         td= cmd,'',
         td= DBNAME,'',
         td= loginname,'',
         td=open_tran,'',
         td=login_time,''
         FROM #BLOCKERS
             order by level asc
FOR XML PATH('tr')
                    ,TYPE
                ) AS NVARCHAR(MAX)) + N'
';

----------------------------------------------------------------

Insert Into  [TOOLS].[dbo].[Lead_Blocker_Log]
select  * from  #BLOCKERS
------------------------------------------------------

SELECT * INTO #BlockingProcess
  FROM #BLOCKERS

  --select * from #BlockingProcess

---------------------------------------------------------
  --loop and kill lead blockers
--DECLARE @SPIDGen2 INT
DECLARE @SPIDGen0 INT
DECLARE @SPIDGen1 INT
DECLARE @ElapsedTimeMSGen0 INT  --if NULL, use Gen1
DECLARE @ElapsedTimeMSGen1 INT
DECLARE @SUBJECTKILL VARCHAR(200)
Declare @sleeping1 VARCHAR (50)
Declare @sleeping2 VARCHAR (50)
--DECLARE @tableHTMLKILL NVARCHAR(MAX);

IF EXISTS(SELECT * FROM #BlockingProcess WHERE Blocked NOt in ('0') )
Begin

    SELECT @SPIDGen0=MIN(SPID) FROM #BlockingProcess WHERE Blocked=0
SELECT @SPIDGen1=MIN(SPID) FROM #BlockingProcess WHERE lastwaittype = 'LCK_M_U'
    --PRINT @SPIDGen0
---PRINT @SPIDGen1

SELECT @ElapsedTimeMSGen0 = BlockingRequest.total_elapsed_time
 FROM sys.dm_exec_requests BlockingRequest
WHERE session_id=@SPIDGen0

SELECT @ElapsedTimeMSGen1 = BlockingRequest.total_elapsed_time
 FROM sys.dm_exec_requests BlockingRequest
WHERE session_id=@SPIDGen1

--PRINT @ElapsedTimeMSGen0
--PRINT @ElapsedTimeMSGen1

SELECT @sleeping1 = BlockingRequest.status
 FROM sys.dm_exec_sessions BlockingRequest
WHERE session_id=@SPIDGen0

SELECT @sleeping2 = BlockingRequest.status
 FROM sys.dm_exec_sessions BlockingRequest
WHERE session_id=@SPIDGen1

--PRINT @sleeping1
--PRINT @sleeping2

If (select count(*) from #BLOCKERS) > 1
IF ISNULL(@ElapsedTimeMSGen0,@ElapsedTimeMSGen1) >180000 OR  ISNULL (@sleeping1,@sleeping2) = 'sleeping'
begin
DECLARE @Subject varchar(100)
SELECT @Subject = 'Blocking Tree Report from ' +  @@servername
    EXEC msdb.dbo.sp_send_dbmail @body = @tableHTML
        ,@body_format = 'HTML'
        ,@profile_name = N'DBMailProfile'

   ,@Subject = @Subject
end

IF ISNULL(@ElapsedTimeMSGen0,@ElapsedTimeMSGen1)>180000 OR  ISNULL (@sleeping1,@sleeping2) = 'sleeping'--milliseconds = 3 minutes
--IF ISNULL(@ElapsedTimeMSGen0,@ElapsedTimeMSGen1)>60000 --milliseconds = 3 minutes
BEGIN

EXEC ('KILL ' + @SPIDGen0)

SELECT @SUBJECTKILL=@@SERVERNAME+' - Lead Blocker Session '+CAST(@SPIDGen0 AS VARCHAR(5))+' Killed'
EXEC msdb.dbo.sp_send_dbmail

@subject = @SUBJECTKILL,
@body = @tableHTML,
@body_format = 'HTML'

Print ('KILL ' + Convert (varchar (50),@SPIDGen0))

END

END

--IF OBJECT_ID('tempdb..#sp_who2') IS NOT NULL DROP TABLE #sp_who2
IF OBJECT_ID('tempdb..#BLOCKERS') IS NOT NULL DROP TABLE #BLOCKERS
IF OBJECT_ID('tempdb..#BlockingProcess') IS NOT NULL DROP TABLE #BlockingProcess


text:
<?php
/**
 * Twitter API SEARCH
 * Selim Hallaç
 * selimhallac@gmail.com
 */

//include "libraries/twitteroauth.php";

$consumer_key = "UmuoIrhenIFmbWO7cYHTxQ1I2";
$consumer_secret = "IINeTdTZPjnDMpTGYt3LnSnZWUX1LuzUhGExbAVkQAneV5thUZ";
$access_token = "988242884-QoCLdJZXKsFsxhtMg44jXLTE7eFl5kGE6xCjKDb7";
$access_token_secret = "74SLvElGqFfgFlVBFfksg1TwMmzHer5ak9Zm9PlQs5ck4";
?>
<form method="post">

Search :

<input type="text" name="linked_search" id="linked_search">

<input type="submit" name="submit" value="search">

</form>
<?php

if(isset($_POST['submit']))
{
	$search=$_POST['linked_search'];
	$twitter = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

	$tweets = $twitter->get('https://api.twitter.com/1.1/search/tweets.json?q='.$search.'&result_type=recent&count=50&lang=en');

	?>
	<!DOCTYPE html>

	  <meta charset="UTF-8">
	  <title>Twitter API SEARCH</title>

	<?php foreach ($tweets->statuses as $key => $tweet) { ?>
		Tweet : <img src="<?=$tweet->user->profile_image_url;?>" /><?=$tweet->text; ?>

	<?php
	}
} ?>

redpajama_set_name: RedPajamaGithub


text:
package edu.wustl.mobilab.native;

import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;

import net.tinyos.message.*;
import net.tinyos.util.*;
import net.tinyos.packet.*;

public class ControlLEDs extends JFrame implements ActionListener {
	static int group_id = 1;
	static String source = "COM1:19200"; // for NMRC motes

	private MoteIF mote;
	private ToggleLEDMsg packet;

	/**
	 * Initializes the frame.
	 */
	public ControlLEDs() {
		super("LED Controller");

		try {
			// uncomment for NMRC mote
			mote = new MoteIF(BuildSource.makePhoenix(BuildSource.makeArgsSerial(source),net.tinyos.util.PrintStreamMessenger.err));
			//mote = new MoteIF(PrintStreamMessenger.err, group_id);
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(0);
		}

		// Add menu.
		ActionListener exitMenuItemListener = new ActionListener() {
			/**
			 * Invoked when an action occurs.
			 */
			public void actionPerformed(ActionEvent e) {
				ControlLEDs.this.close();
			}
		};
		JMenuItem exitMenuItem = new JMenuItem("Exit");
		exitMenuItem.addActionListener(exitMenuItemListener);
		JMenu fileMenu = new JMenu("File");
		fileMenu.add(exitMenuItem);
		JMenuBar menuBar = new JMenuBar();
		menuBar.add(fileMenu);
		setJMenuBar(menuBar);

		// Add window listener.
		this.addWindowListener(
			new WindowAdapter() {
				/**
				 * Called when window close button was pressed.
				 */
				public void windowClosing(WindowEvent e){
					ControlLEDs.this.close();
				}
			}
		);

		JButton rb = new JButton("Toggle Red");
		JButton gb = new JButton("Toggle Green");
		JButton yb = new JButton("Toggle Yellow");

		rb.setActionCommand("red");
		gb.setActionCommand("green");
		yb.setActionCommand("yellow");

		rb.addActionListener(this);
		gb.addActionListener(this);
		yb.addActionListener(this);

		getContentPane().setLayout(new GridLayout(3,1));
		getContentPane().add(rb);
		getContentPane().add(gb);
		getContentPane().add(yb);

		show();
	}

	public void actionPerformed(ActionEvent ae) {
		packet = new ToggleLEDMsg();
		if (ae.getActionCommand().equals("red")) {
			packet.dataSet(new byte[] {1});
		} else if (ae.getActionCommand().equals("green")) {
			packet.dataSet(new byte[] {2});
		} if (ae.getActionCommand().equals("yellow")) {
			packet.dataSet(new byte[] {3});
		}
		try {
			mote.send(mote.TOS_BCAST_ADDR, packet);
		} catch (IOException ioe) {
			ioe.printStackTrace();
			System.exit(0);
		}
	}

	/**
	 * Shows the frame.
	 */
	public void show() {
		Dimension size = new Dimension(600,440);
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		setBounds(
					 (screenSize.width - size.width) / 2,
					 (screenSize.height - size.height) / 2,
			size.width,
			size.height);
		super.show();
	}

	/**
	 * Closes the frame.
	 */
	private void close() {
		setVisible(false);
		System.exit(0); // Delete this line if necessary.
	}

	public static final void main(String[] args) {
		if (args.length > 0)
			group_id = Integer.valueOf(args[0]).intValue();
		new ControlLEDs();
	}
}


text:
Home News Two-fifths of women shamed for book choices, survey finds
Two-fifths of women shamed for book choices, survey finds
Published August 28, 2019 by Katie Mansfield
Capital Crime has released new research which asked readers about their reading habits and perception of the industry, revealing female readers have been criticised for...
Capital Crime has released new research which asked readers about their reading habits and perception of the industry, revealing female readers have been criticised for their book choices for being too commercial or trashy, while a majority of readers surveyed feel there is a "snobbery" in how the publishing industry picks and promotes certain books.
The survey, of 1,073 people found that 72% of people who read a few times a week feel there is snobbery in how the publishing industry picks and promotes certain books. The poll also found that 65% of people prefer commercial fiction over literary fiction and 88% of people think that literary festivals should include more commercial fiction authors in their programmes.
Nearly two-fifths (38%) of women said they have been criticised for their book choices being too commercial or trashy. Only 32% of men had suffered similar criticism.
When it comes to book awards, 47% of those surveyed said they are unlikely to pick a book based on whether it has won or been shortlisted for a big literary award, agreeing with the statement that "shortlisted books rarely appeal to me". By contrast, 34% said they are very likely to choose a book based on its award credentials saying "it's a stamp of quality".
The poll also found that 20% of people surveyed have never used a library and 40% shop for their books on Amazon.
Adam Hamdy, author, screenwriter and one of the organisers of the Capital Crime Festival, who conducted the research, said: "These statistics were shocking. Reading is one of Britain's most loved hobbies and the literary industry is making people feel bad for their book choices. It's wrong. We at Capital Crime want to celebrate the joy of reading. Whatever you want to read. There should be no judgement or hierarchy in the type of books or authors you like reading. Just the act of reading is a joy."
David Headley, agent and bookseller and co-organiser of Capital Crime, added: "We believe everyone should enjoy reading without the fear of shame or judgement over their book choices. Whether it be by the literary industry – who are being perceived to only promote certain authors and shun commercial fiction. Or those unwelcome comments people make about your reading choice on your commute. We should all be doing everything we can to encourage people to read. We want people to use a book to switch off and become engrossed in another world – without being judged for their choice of title or author."
The survey comes ahead of the inaugural Capital Crime Festival which is due to take place from 26th to 28th September at the Connaught Rooms in London. Kate Atkinson, Robert Harris, David Baldacci, Ian Rankin and Ann Cleeves are among the names on the line-up.
Capital Crime
Capital Crime to launch online festival
Capital Crime to open school students' eyes to publishing careers
Candlish and Edwards kick off Capital Crime launch
Headley and Hamdy to launch London crime and thriller festival
Hamdy and Land inspire students for Capital Crime

redpajama_set_name: RedPajamaCommonCrawl


Color is an important factor in soft outfit,The modularizedcolor design method express the theme fast and accurately, improve the quality of the show flat solution and improve customer perception of theme culture idea. This paper explores a new method of color design with using the basic theory of chromatics-- colour modular design. It also expoundshow to increase the customers'experience feeling and cultural cognitionthrough the color modular design.


text:
John Kirwan
John Kirwan was one of the most devastating wing threequarters to play rugby for New Zealand; when in top form, he was an irresistible try-scorer as his 35 tries in 63 test matches indicates (plus another 32 tries in non-test matches).
He was famously playing third grade club rugby when he was first chosen for Auckland in 1983 and thereafter his progress was meteoric. "JK," as he was popularly known, was first chosen for the All Blacks in 1984 and he adorned the international game for the next decade.
Kirwan was one of the key figures in 1987 when New Zealand won the first World Cup and he scored an end-to-end try against Italy in the opening match that electrified the tournament.
He played a total of 96 matches for New Zealand.
Anthony Mosse
Anthony Mosse was the standardbearer for New Zealand swimming through the 1980s.


text:
Super Bowl week to feature Bruno Mars, Cardi B, Migos
Southwest / Texas 5 months ago 87 Views
LOS ANGELES (AP) — Travis Scott to Jermaine Dupri are among the music artists who have been criticized for taking part in Super Bowl-related events, but their shows — and many others — will still go on. That's despite a political firestorm over whether social justice needs to be addressed at the NFL's marquee event.
Dupri is hosting a concert series called Super Bowl Live, while Scott is expected to perform at the Pepsi Super Bowl Party two days before performing at Super Bowl 53 on Sunday. The packed week will also feature performances by Bruno Mars, Cardi B, Aerosmith, Diplo, Future and Lil Wayne.
The pressure on performers is part of the reaction to protests started by former NFL quarterback Colin Kaepernick kneeling during the national anthem to raise awareness to police brutality, racial inequality and other social issues.
Scott received widespread criticism for his upcoming Super Bowl appearance. Scott will join headliner Maroon 5 and Outkast member Big Boi during the halftime show at the Mercedes-Benz Stadium in Atlanta, where the New England Patriots will play the Los Angeles Rams.
Maroon 5, with frontman Adam Levine, said they want to let their "show do the talking" before their halftime appearance. The band canceled their Thursday news conference to promote their performance.
The pre-game performances will showcase Gladys Knight singing the national anthem and Chloe X Halle who will sing "America the Beautiful."
Despite being called a "sellout," Dupri plans to give people who lost family members as result of police brutality a platform to speak onstage during his five-day concert series, which started Saturday.
On Thursday, Ludacris and Migos will kick off the first night of the Bud Light Super Bowl Music Fest and EA Sports Bowl. Aerosmith, Post Malone, Bruno Mars and Cardi B will headline the final two nights of the music festival.
Comedian Rickey Smiley will co-host BET's gospel concert Thursday with Kirk Franklin, Lecrae, The Winans and Tasha Cobbs; the Pandora Live Concert will feature Zac Brown Band.
NBA legend Shaquille O'Neal will hold his "Shaq's Fun House" music event Friday featuring Migos, Diplo, Tiesto and Lil Jon. The same night, Scott will perform at a Pepsi-hosted concert.
Foo Fighters along with Run the Jewels will perform at the DirecTV Now Super Saturday Night concert — a show that has included Jennifer Lopez and Taylor Swift in previous years. Maxim will throw a party nearby with Jamie Foxx, Future and Diplo; Lil Wayne and Snoop Dogg will perform at the Sports Illustrated "Saturday Night Lights" party. Ludacris will host the Big Game Big Give charity event on Saturday, which will feature a performance by Black Eyed Peas.
Dallas Post Tribune
400 Years of Slavery, It Stops with Us!


text:
Orthocis lucasi är en skalbaggsart som först beskrevs av Abeille de Perrin 1874.  Orthocis lucasi ingår i släktet Orthocis, och familjen trädsvampborrare. Arten har ej påträffats i Sverige.

Källor

Trädsvampborrare
lucasi

redpajama_set_name: RedPajamaWikipedia


Aviation Auditors: More than just a tick in the box.
Aviation Auditors was founded in 2010, when our Managing Director, Mr Dennis Hill, wanted to offer an independent aviation auditing service.
Since then we've have helped many companies with aviation auditing, aviation accident investigation, aviation risk management, and aviation safety management to name a few.


Because there cannot be genuine Wildlife and Nature without Forests, nor a healthy ecosystem from which we are part of, as every year, lets take the time today to remember and contemplate The International Day of Forests! If your are in Northern hemisphere, this time of year is best to put your tracking shoes and go search the arrival spring season where it is most spectacular, in an authentic blooming forest, you will never feel more alive! And where-ever you are around the world, remember the Forest was once our home, and even today is best remedy against day to day stress and body and mind peace and balance! Alone in the woods, you enter in communion with fellow Homo sapiens through the ages! Therefore, enjoy the day, and don't forget to protect the Forest, starting by being a responsible consumer in today society, this is the very minimum each can do (some tips to start with on our blog on ECO page)!
← Happy World Wildlife Day 2019!
Yes, this time of year is certainly an inspiration to head out and enjoy nature.


text:
Mark Diesendorf, PhD Biography
Senior Lecturer and Researcher at the Institute of Environmental Studies at the University of New South Wales
"The underlying issue is whether a mix of renewable energy sources can substitute for a conventional electricity supply system based on fossil fuels… Based on my scientific research experience in this field, I say 'yes…'"
"Wind Power Can Substitute for Base-Load Coal," www.onlineopinion.com.au, Feb. 6, 2008
Senior Lecturer and Researcher, Institute of Environmental Studies, University of New South Wales, 2004-present
Director, Sustainability Centre Pty Ltd, 2001-2007
Professor of Environmental Science and Founding Director, Institute for Sustainable Futures, University of Technology (Sydney, Australia), 1996-2001
Senior Lecturer, Human Ecology, Australian National University, 1994-1996
Former Secretary, Society for Social Responsibility in Science (Canberra, Australia)
Co-founder and Former Vice-President, Sustainable Energy Industries Council of Australia
Co-founder and Former President, Australasian Wind Energy Association
Former President, Australia New Zealand Society for Ecological Economics (ANZSEE)
Former Vice-President, Appropriate Technology for Community and Environment (APACE)
Has worked with the following organizations: AusAID, Australian Conservation Foundation, Greenpeace Australia Pacific, Hydrocool Pty Ltd, Minister for Minerals & Energy (Western Australia), StateRail (NSW), Sustainable Energy Development Authority of New South Wales, Sustainable Energy Authority of Victoria, WWF Australia
PhD, Applied Mathematics, University of New South Wales
BSc, Physics, University of Sydney
Should Carbon Capture and Storage (CCS) Technology Be Developed?
ProCon.org. (2013, May 1). Mark Diesendorf, PhD. Retrieved from https://alternativeenergy.procon.org/source-biographies/mark-diesendorf/
ProCon.org, "Mark Diesendorf, PhD," ProCon.org. last modified May 1, 2013. https://alternativeenergy.procon.org/source-biographies/mark-diesendorf/.
ProCon.org, "Mark Diesendorf, PhD." ProCon.org. 1 May 2013, alternativeenergy.procon.org/source-biographies/mark-diesendorf/
ProCon.org. "Mark Diesendorf, PhD." ProCon.org. Last modified on May 1, 2013. Accessed January 19, 2021. https://alternativeenergy.procon.org/source-biographies/mark-diesendorf/


text:
Q: Changing the Replication Distributor Server Scenario:
We have Server A, a current distributor server that also does some publishing (but not the exclusive publisher servers).  We have servers C, D, E, F and G.  All of these are subscribers to the publishers.  We have a Server B that we want to exclusively use for distributing, no publishing.  We want all replication to use Server B as the distributor and not Server A, meaning that I can either slowly switch publication at a time, or change the configuration, relative to what option is available (unfortunately, this is not as clear as I had hoped in MS articles).
Questions:

*

*Can a publisher server have two distributor, such as in the above example, can Server A and Server B both be distributors, where Server B distributes for some of Server A's publishers and Server A also distributes for some of its own publishers as well?  In configurations, the below code would return two values for distributor - Server A and Server B:
USE master
GO
EXEC sp_helpdistributor

*Assuming the question for option 1 is not possible, if I were to remove Server A as the distributor and replace it with Server B, what's the offline time for all the publications in existence on Server A, meaning is replication set up to where a simple configuration change doesn't disrupt the process (like a mirror aware connection string), or will this cause a massive outage?
Thanks!


text:
Moisture-fueled heat wave continues baking…
Moisture-fueled heat wave continues baking Southern California
Giant clouds can be seen over the 170 Freeway Wednesday, July 24, 2019, in the North Hollywood area as monsoonal moisture from Mexico made for hot and humid weather across Southern California. (Photo by Mike Meadows/Special to the Los Angeles Daily News)
PUBLISHED: July 24, 2019 at 5:58 am | UPDATED: July 24, 2019 at 3:12 pm
LOS ANGELES — The Southland's second heat wave of the summer enters its third day Wednesday, with some of the week's highest temperatures expected in the valleys, and a heat advisory in place until 9 p.m. for the San Fernando and Santa Clarita valleys.
"The combination of very high temperatures and humidity creates a dangerous situation in which heat illnesses are possible," according to the National Weather Service. "Temperatures inside vehicles, even if the windows are partially open, can quickly rise to life-threatening levels."
Forecasters urged the public to "drink plenty of fluids, stay in an air-conditioned room, stay out of the sun, and check up on relatives and neighbors."
The National Weather Service said the heat wave, which is accompanied by monsoonal moisture out of Mexico, meaning it may feel even hotter than what the thermometer shows, will persist through the weekend. Forecasters warned that this week's weather brings the potential of heat-related illnesses, especially for the homeless, the elderly, infants, and anyone participating in outdoor activities.
Pushing off the edge of the pool Bernie Navarrete, 11, of Montebello, does a backflip at the George Hensel Aquatics Center in Montebello on Tuesday, July 23, 2019. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
A visitor to Hollywood and Highland has a brief escape from oppressive heat Wednesday, July 24, 2019 in Hollywood, CA. Cooler temperatures are expecting on Southern California at the end of the week. (Photo by David Crane, Los Angeles Daily News/SCNG)
A hiker makes his way down from the cross at the top of Mount Rubidoux as clouds fill the sky where the temperature reaches above 100 degree in Riverside on Wednesday, July 24, 2019. (Photo by Watchara Phomicinda, The Press-Enterprise/SCNG)
A jogger makes his way up Mt. Rubidoux on Friday, Sept.2, 2016. Heat and winds are in store for parts of the Inland Empire through the weekend. (KURT MILLER/THE PRESS-ENTERPRISE, SCNG)
Los Angeles firefighters work in 100-degree heat Wednesday, July 24, 2019, after four Italian cypress trees went up in flames on the 13600 block of Ventura Boulevard in Sherman Oaks. (Photo by Mike Meadows/Special to the Los Angeles Daily News)
A woman, turning her head away from the sun, as she passes a sign at the Calvary Baptist Church in West Hills, CA. on Tuesday, July 23 2019 just before 6 pm. (Photo by Dean Musgrove, Los Angeles Daily News/SCNG)
After a swim Zachary Coffman, 10, of La Mirada, drys off at the George Hensel Aquatics Center in Montebello on Tuesday, July 23, 2019. Coffman is at the pool daily and is on the Montebello Waves Swim Team. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
Faith Coermoolls, 5, and other children from the City of Montebello Camp Quest enter the George Hensel Aquatics Center in Montebello on Tuesday, July 23, 2019 for a swim. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
Children from the City of Montebello Camp Quest enter the George Hensel Aquatics Center in Montebello on Tuesday, July 23, 2019 for a swim. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
Bernie Navarrete, 11, of Montebello, comes up after doing water backflips in the George Hensel Aquatics Center's pool in Montebello on Tuesday, July 23, 2019. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
Pablo Aguilar, 11, swims in the George Hensel Aquatics Center's pool in Montebello on Tuesday, July 23, 2019. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
Pablo Aguilar, 11, center, plays in the George Hensel Aquatics Center's pool in Montebello on Tuesday, July 23, 2019. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
Zachary Coffman, 10, of La Mirada, walks through the George Hensel Aquatics Center in Montebello on Tuesday, July 23, 2019. Coffman is at the pool daily and is on the Montebello Waves Swim Team. (Photo by Sarah Reingewirtz, Pasadena Star-News/SCNG)
Wednesday's highs were expected to reach 89 in downtown Los Angeles, 91 in Anaheim, 97 in Pasadena and Woodland Hills, 95 in Burbank, 99 in Van Nuys and 103 in Valencia.
Long Beach reached 96 degrees on Tuesday, breaking the record for that date of 94 degrees, set in 1974.
A number of communities hit triple digits, including Pasadena, Van Nuys, Chatsworth, Woodland Hills and Santa Clarita.
The heat wave results from high pressure over the nation's Four Corners region, said NWS meteorologist Curt Kaplan. It has no meteorological connection to the hot weather on the East Coast.
Rainfall expected leading into MLK Day weekend in Southern California
Cold storm to bring wind, rain, snow beginning this afternoon to Southern California
Wet and windy weather coming back to Southern California
Cold, fast-moving storm bringing rain, snow to Southern California
Storms sweep across southern U.S., death toll rises to 10
Over the next few days, air circulating clockwise will pick up moisture from Mexico, including Baja California, Kaplan said. There's no expectation of flash flooding, he said, but there could be an elevated danger of fire amid the dryness at lower elevations if thunderstorms develop and generate lightning, including dry lightning.
There was a slight chance of afternoon thunderstorms Wednesday in the mountains and the Antelope Valley, according to an NWS statement.
A slight cooling trend will get underway toward week's end.
The NWS forecast partly cloudy skies in LA County Wednesday and highs of 79 in Malibu; 80 degrees in Torrance and at LAX; 82 on Mount Wilson; 84 in Avalon; 88 in Long Beach and San Pedro; 90 in downtown LA; 94 in San Gabriel; 96 in Burbank; 97 in Pasadena; 99 in Sherman Oaks, Van Nuys, Whittier and West Covina; 100 in North Hollywood and Studio City; 102 in Palmdale and Woodland Hills; 103 in Lancaster and Northridge; and 104 in Reseda and Santa Clarita. Thursday's highs will be 3 to 4 degrees lower.
Sunny skies were forecast in Orange County along with highs of 76 in Newport Beach and San Clemente; 77 in Laguna Beach; 82 on Santiago Peak; 90 in Santa Ana and on Ortega Highway at 2,600 feet; 92 in Irvine; 93 in Fullerton in Mission Viejo; 94 in Fremont Canyon, Anaheim and Yorba Linda; and 95 in Trabuco Canyon. Thursday's temperatures will be a couple degrees lower.
More in Crime + Public Safety
No retrial for McStay family killer Charles Merritt, judge rules at sentencing


text:
Football club FC Barcelona congratulates Ranbir Kapoor and Alia Bhatt on becoming parents
The official Twitter page of well-known Spanish football club FC Barcelona has congratulated Ranbir Kapoor and Alia Bhatt for becoming proud parents of the baby girl Raha. They shared a picture of the two actors with their baby and wrote, "Congratulations, @aliaa08 & Ranbir Kapoor!! A new Barça fan is born. We can't wait to meet you all in Barcelona." The tweet, which became viral in no time, came a day after the couple revealed the name of their new-born girl. The fans of both the actors can't stop gushing over the gesture of the football club as they believe it is a big thing! However, there was a funny twist in store after one fan dug out a seven-year-old tweet of Alia where she is proudly posing while wearing the jersey of Barcelona's rival Arsenal. She had captioned the picture, "Thank you @atulkasbekar for this!!!! Guess this makes me a #Gooner officially. Or is it Goonerette? Come on Arsenal!!!" Just a couple of months before giving birth to Raha, Ranbir and Alia's Brahmastra – Part One: Shiva hit the theatres and became a runaway hit.


text:
Why and how to defend business data
View all blog posts under Articles | View all blog posts under Master's in Business Administration
Business has gone digital, and it can't go back. This state of affairs has come to pass in every industry imaginable, bringing a new set of practices that leaders will have to follow. If you're stepping into a position of authority, you'll have to become aware of your organization's digital footprint – both how to use data to get ahead in your industry, and how to defend that digital content against the risk of a breach.
When organizations only half-embrace the current age of IT-driven business, taking on the advantages without worrying about protecting their digital infrastructure, they make themselves easy targets for cybercriminals. As software and hardware have gotten more powerful, these thieves are hardly disappearing, instead currently operating at their highest observed levels.
No matter your business's region or exact industry, it's important to grapple with the state of cyber security, familiarizing yourself with what might happen to your data. Then, it's time to install defenses that comply with the law and answer the threat posed by tech-savvy criminals. In a world where data is a pillar of business, information protection is a key value for a modern executive.
Ongoing risk
As long as there are cybercriminals, data security will be part of the business playbook. Following a year in which the frequency of data breaches rose 40 percent according to an Identity Theft Resource Center report, there is little doubt: Even staying consistent isn't enough to keep a company safe. Businesses need to periodically increase their security to survive in this challenging environment.
Organizational responsibility
Breaches of customer data are fraught with risk of all kinds. Your company isn't just holding information relevant to its own operations, either. Customer data is made up of everything from transaction records and payment data to granular information used to customize individual experiences. This content is essential to performing the functions of a modern business, and hackers are interested in stealing it.
As indicated by the National Conference of State Legislatures, 48 states have laws on the books requiring organizations to tell individuals whose data has been compromised. This process differs from one territory to another, but the general thrust of the laws remains the same: When your data suffers a breach, you have a duty to inform the public. Reputational damage can result in these cases, potentially adding sluggish future sales to the out-of-pocket expenses to expel the attackers and repair the damage.
Cisco's 2017 Annual Cyber Security Report delved into the costs of data loss and explained that more than half of breached companies were scrutinized by the public. While operations and finance suffered the most after attacks, reputation and retention were the nextmost-affected traits. Consumers tread carefully around companies that have been hacked, well aware of how troublesome it would be to lose control of their personal information.
Breaking down the Cisco data further, 22 percent of companies lost customers, 29 percent suffered revenue damage and 23 percent saw reduced business opportunities for the future. The need to avoid these results makes it official: Data protection deserves a prominent place in a company's budget for the year. Failure to defend data is negligent.
All-encompassing threat
There is no one profile of a company at great risk of suffering a data breach. The aforementioned customer information is a feature of every imaginable industry, and the Verizon Data Breach Information Report confirmed this variety.
While financial institutions understandably topped the list with their stores of bank account data, they only attracted 24 percent of breaches during the study's reporting period. Health care suffered 15 percent of breaches, followed by the combined retail and accommodations sectors, also at 15 percent. Public sector agencies weren't spared – 12 percent of victims came from the government.
Individual targets
One of the most terrifying facts about data theft today is that all it takes is one virtual foothold to expose a company's data. A single official making a poor decision and clicking on the wrong link can doom an organization to information theft. The Identity Theft Resource Center noted that spear phishing – deceptive messages sent directly to employees – are on the rise. In addition to stealing data, thieves that access content can hold the information for a ransom, a method that has become more prominent in recent years.
Beyond the targeted strikes of spear phishing, hackers have rediscovered some of their blunt-force attacks. According to the Cisco report, 2016 was a big year for mass emails and adware. This combination of precision and volume shows the enormity of the task facing companies today.
Employees can run into online danger in any number of ways.
Cisco added that hackers have become increasingly "corporate" in recent years. Cybercriminals are deploying complex, multi-step attacks which operate some campaigns specifically to mask what is happening with other malicious software. Corporate leaders will have to be ready for sophisticated hacking that equals their own operations in terms of sophistication and organization.
Proactive risk mitigation
With the risks of modern business firmly in mind, it's important to ask what companies are doing to stop hackers – and what they could be doing better. To begin coordinating a response to hackers, leaders need to understand where the attacks will come from. The most recent Verizon survey pointed out that outside hackers are the main causes of data breaches – they were responsible for 75 percent of studied attacks. That said, if managers ignore the threat of internal attacks, they may regret it. That other 25 percent of breaches is still a significant number.
Executive buy-in
When creating preventive strategies designed to keep criminals out of vital systems, leaders should work with subject matter experts within the organization. SANS advocated for a model in which organizational executives strike up functional partnership with the security team. When these alliances are reduced to experts providing recommendations to the bosses, the most vital policy proposals may never make it into use.
SANS interviewed security chiefs about their role and found that in some cases executives, potentially buoyed by the fact that they haven't yet been breached, end up sticking with antiquated solutions too long. Executives who take on this kind of closed-off stance could find themselves humbled by attack methods that go beyond their ability to correct.
Preventive measures
Preparation is a virtue when it comes to cyber security, as is self-knowledge. Cisco suggested that companies not just put well-considered preventive security plans in place, but also that they test these strategies. Information gathered from successful tests that can compare performance can go a long way in determining whether an organization is on the right track. Leaders can't be afraid to ensure their preparedness, at the risk of being unready when a real threat emerges.
Cisco also recommended an approach with plenty of integrated and automated IT elements. When human security personnel are aided by plenty of advanced algorithms, they'll have extra time to give to the investigations that really deserve their full attention. Designing a security strategy that works is always about setting the team up for success, giving them the best chance against unknown and potential threats.
Evolve with technology
Every year brings changes and escalation in the risk and seriousness of cyber incidents. Using a strategy that applied in 2010, or even 2016, isn't acceptable in 2017. Next year, things will have changed again. Leaders should acknowledge that to truly be prepared for whatever hackers may dish out, they'll have to keep their systems evolving. The following are among the recent trends and likely future threats.
Breaches that linger
According to Experian's Data Breach Industry Forecast, the latest trend in information loss is that companies' past problems are coming back to haunt them. The source gave the example of the 2014 Yahoo breach, which led to a massive release of stolen information… in 2016. Users who employ the same passwords across different sites may find themselves compromised as stolen data sets hit the web for years to come.
In fact, Experian suggested that this new trend may bring about wholesale change in the way people think about identification, and the way companies respond to breaches. Users themselves should probably switch to multiple-factor authentication, enabled by online services that support this more secure form of login. As for organizations, they'll have to become more detailed in their disclosures of breaches, helping affected individuals stay safe online in the years ahead.
Companies are using cloud-based applications to become more effective at sharing data. Internal apps enable companies to work together over great distances, while customer-facing versions empower advanced interactions with wide audiences. Of course, Cisco noted that these helpful cloud-based tools are now likely targets for cyberattacks. The appeal is obvious: New technology with connection to companies' networks is a potential way for hackers to gain a back door into corporate data.
The lesson here is that no asset is too new or too old to defend from criminals. New solutions may have vulnerabilities that haven't been detected yet but demand attention. Older tech products may be suffering from a lack of support by vendors, meaning they need replacement. The challenge for IT departments and executives is to concoct strategies that will keep an eye on every piece of a sprawling network. This is a 2017 problem that seems poised to become more acute in 2018 and on.
A part of the job
The main trait of cyber security in 2017 is that it is everywhere. No role is exempt from the need for safety, no industry is without threats and no size company can avoid attention from attackers. As long as leaders accept the responsibility to defend their digital assets and make themselves aware of the very real value of their data, they've taken the first step in the right direction.
The importance of cyber security is clear in its inclusion in relevant degree programs. Today, competency with data has become part of the Master of Business Administration curriculum. Technology use is inextricable from other forms of business excellence.
Recommended Readings:
Understanding the Importance of Marketing Data
4 ways an MBA Can Help You Advance Your Career
http://www.verizonenterprise.com/resources/reports/rp_DBIR_2017_Report_en_xg.pdf
https://newsroom.cisco.com/press-release-content?articleId=1818259
http://www.experian.com/assets/data-breach/white-papers/2017-experian-data-breach-industry-forecast.pdf
https://www.sans.org/reading-room/whitepapers/dlp/data-breaches-prevention-practical-37267
http://www.idtheftcenter.org/2016databreaches.html
http://www.ncsl.org/research/telecommunications-and-information-technology/security-breach-notification-laws.aspx
Learn more about our online degree programs.
1. What degree level are you interested in pursuing?
What degree level are you interested in pursuing?
2. What degree program are you most interested in?
What degree program are you most interested in?
What degree program are you most interested in? Please select an option Bachelor's in AccountingBachelor's in Business AdministrationBachelor's in FinanceBachelor's in Human Resource ManagementBachelor's in MarketingBachelor's in Organizational LeadershipBachelor's in Rawlings Sport Business Management Bachelor's in Communication Bachelor's in Computer ScienceBachelor's in CybersecurityBachelor's in Data ScienceBachelor's in Digital MediaBachelor's in Management Information Systems Bachelor's in Communications Sciences and DisordersBachelor's in Exercise ScienceBachelor's in General Studies with a Concentration in HealthcareBachelor's in Healthcare Management Bachelor's in Forensic PsychologyBachelor's in Psychology Bachelor's in EnglishBachelor's in HistoryBachelor's in Liberal Studies RN to Bachelor's in Nursing Bachelor's in MathematicsBachelor's in Sustainability Bachelor's in Criminal JusticeBachelor's in Human Development and Family StudiesBachelor's in International StudiesBachelor of Social WorkBachelor's in Sociology
What degree program are you most interested in? Please select an option Master's in AccountingMaster's in Business Administration (MBA)Master's in Data AnalyticsMaster's in Management and Leadership Master's in Strategic Communication and Leadership Master's in Artificial IntelligenceMaster's in CybersecurityMaster's in Data ScienceMaster's in Software Development Master's in Health Administration (MHA) Master's in Speech-Language Pathology Master's in Nursing (MSN)Post-Master's NP Certificates
What degree program are you most interested in? Please select an option Doctorate in Higher Education Leadership Bachelor's in Nursing to DNPBSN to DNP - Adult Gerontology Acute Care Nurse PractitionerBSN to DNP - Adult Gerontology Primary Care Nurse PractitionerBSN to DNP - Family Nurse PractitionerBSN to DNP - Pediatric Primary Care Nurse PractitionerBSN to DNP - Psychiatric Mental Health Nurse PractitionerDoctor of Nursing Practice (DNP)DNP with Nurse Practitioner Concentration (DNP-NP)DNP-NP - Adult Gerontology Acute Care Nurse PractitionerDNP-NP - Adult Gerontology Primary Care Nurse PractitionerDNP-NP - Family Nurse PractitionerDNP-NP - Psychiatric Mental Health Nurse PractitionerDNP-NP - Pediatric Primary Care Nurse Practitioner
2. What program are you most interested in?
What program are you most interested in?
What program are you most interested in? Please select an option Artificial Intelligence Bachelor Certificate Blockchain Bachelor Certificate Cybersecurity Bachelor Certificate Data Science Bachelor Certificate Software Development Bachelor Certificate User Experience/User Interface Bachelor Certificate Big Data Post-Bachelor Certificate Fundamentals of Artificial Intelligence Post-Bachelors Certificate Communication Sciences and Disorders Post-Bachelor Certificate Machine Learning Post-Bachelor Certificate Post-Master's NP Certificates
Online Degrees | Blog | Why and how to defend business data


Prader-Willi syndrome (PWS) is a complex genetic disorder characterised by a set of phenotypic traits, which include infantile hypotonia, short stature, and morbid obesity. Over the last 12 years, visible progress has been made in medical care management of PWS patients in Poland. Increasing awareness of the disorder in neonatal and paediatric care has led to early identification of the condition in neonates, followed by the institution of an appropriate dietary regime, introduction of physiotherapy, and early-onset recombinant human growth hormone (rhGH) treatment. Growth hormone (GH) therapy in Poland is conducted within the nationwide framework of the Therapeutic Programme: "Treatment of Prader-Willi Syndrome". The therapeutic interventions initiated in the paediatric centres need to be continued in multidisciplinary adult care settings. The main aim of PWS clinical management in adulthood is prevention of obesity and its comorbidities, treatment of hormonal disorders, mental health stabilisation, nutritional guidance, as well as on-going physiotherapy. Integrated multidisciplinary therapeutic intervention is necessary if patients with such a complex genetic condition as PWS are to not only achieve an average life expectancy but also to enjoy higher quality of life.


text:
(Natalie Vineberg / McGill Tribune)
a, Student Living, Student of the Week
Student of the Week: Emma Solome
Written by Emma Whitehall on February 16, 2016
More in a:
Boundless: McGill Tribune Special Issue November 30, 2016
The Sport Authority EP. 7: Looking back at Sam Hinkie and The Process April 12, 2016
Rare books: The hard spine of the modern library April 5, 2016
When transitioning from first year to second year, Emma Solome knew she was looking for something more from her university experience. Her focus this year is incorporating extra-curricular ventures that she is passionate about while balancing a challenging degree in chemical engineering.
"In first year, I wasn't really involved in anything," Solome said. "I didn't do any extra-curricular [clubs or volunteer work] for me, or to help other people, which I found left me feeling very stagnant. I wasn't super satisfied at the end of last year."
Solome decided to volunteer with Organic Campus and the Fair Trade Corner. She chose them for their environmentally conscious nature, providing students with options for local, organic food and fair-trade coffee, respectively.
"It's a low cost way for students be more environmentally conscious in their day-to-day routine," Solome said. "I think these two organizations are worth investing time into since they make McGill more sustainable."
Solome is also a member of the youth engagement venture of Engineers Without Borders (EWB), a group on campus that works to make incremental and sustainable changes to the education system in order to foster the growth of a more diverse group of young people.
"I joined […] knowing that in high school I was really unmotivated to learn in class," Solome said. "I had a couple really good teachers […] but on a whole, there is a problem with the education system in the sense that it caters to a certain type of person [….] What we're doing this semester is going to an elementary school here in Montreal and actually giving them workshops on problem solving and resolving local issues."
Having previously trained for 10 years in classical ballet, this year Solome was also excited to return to dance. She joined a jazz dance class at the McGill Athletics centre, run by a passionate instructor with a heavy focus on dancing for the joy of it—something she found to be missing in the world of classical ballet.
"I've met all these different people who I would have never met otherwise," Solome said. "Meeting like-minded people is key. That was the turning point so far."
Another factor that has led Solome to becoming involved in an array of clubs this year has been her attempt to find balance outside of her school work.
"I enjoy hiking, travelling, being outside, [and] I sometimes find it funny that I'm in chemical engineering," Solome said. "I feel like I should be in geography or something that would really get me out into the field."
Looking to the future, travel is at the forefront of her plans, but Solome mentions an interest in urban planning as a possible career option.
"Growing up in Vancouver with the housing prices being so expensive all the time, trying to find unique ways to fit people into a city that has become so unaffordable seems interesting to me," Solome explained.
For now, which city (or cities) she would find that career evolving in is up for debate
"The hardest thing about picturing myself somewhere in a distant future is that every time I go somewhere, I always wish I was there for longer," Solome said.
Reflecting on her time at McGill thus far, and whether or not she feels it has changed her in any way, Solome points to noticeable shifts in her personality and outlook.
"I feel different," she said. "I feel like I'm more open-minded, and more content with where I am, regardless of where I am."
McGill Tribune (MT): Chocolate or candy?
Emma Solome (ES): Oh my! Right now I'd say chocolate.
MT: If you had to live with one famous person for the rest of your life, whom would you choose?
ES: Maybe Ellen DeGeneres, she's so funny
MT: Best movie you saw recently?
ES: The new Star Wars.
MT: Number one 'must see' city in the world?
ES: Palermo, Italy.
Organic Campus


text:
Black Rain est le premier album studio du groupe éponyme de heavy metal français Black Rain. Il est sorti en . L'album a été enregistré, produit et mixés au Rockett Queen par Johnny Rockett.

Titres
 Kill Em All
 Gods of Metal
 No Life Till Metal
 Winterwind
 Awake
 Hate, Disgust and Power
 Crystal Night
 Battleground
 Everything Goes Up in Smoke

Formation

 Swan : Guitare, chant
 Max 2 : Guitare
 Heinrich : Basse
 Kenny "Big Balls" Snake : Batterie

Album musical sorti en 2006
Album avec pochette par Jean-Pascal Fournier


"A Pile of Feathers" has been accepted by Workers Write! This issue of the journal is titled "Tales From the Concrete Highway" and will include stories told from the driver's point of view. They're going to reprint "A Pile of Feathers" in their issue! The journal will come out next spring, but if you can't wait that long, feel free to read the story in The Tower Journal, where it was originally published.
Next postPublished in Workers Write!
I am a reader and a writer. Fiction, nonfiction; long and short; books and one-page sips of story. I'm delighting in the journey.


Altmetrics might be useful for groups to monitor their impact on social media and the media at large. Altmetric scores are available in Global Search and in Scopus.
Since 2011, altmetric scores for articles have been shown in Scopus. Currently, the article "Duodenal infusion of donor feces for recurrent clostridium difficile" has the highest score at Wageningen UR. It has not only been Facebooked and tweeted a lot, but it has also been mentioned in the regular news. By clicking on the altmetric 'donut', you can find all 39 news articles from the 28 different media that have reported on this paper.The possibilities of the Scopus altmetric tool are more comprehensive than the Global Search application.
Research groups can monitor their altmetric score in Scopus. This might be interesting for peer review.


Health: is printed six occasions per year and makes an attempt in each number to offer a mix of articles that inform or that provoke debate. The readership of the journal is extensive and drawn from different disciplines and from workers both inside and out of doors the health care professions. Extensively abstracted, Health: ensures authors an extensive and informed readership for their work. A review of informatics, knowledge security, professional software applications, and patient confidentiality. Let's look at some historical past. The mob took over organized labor, and looted the pension funds. Rob Thomas: Rooter: A Methodology for the Typical Unification of Access Factors and Redundancy 2005 for WMSCI (see above) Mathias Uslars paper was accepted to the IPSI-BG conference.
It is not straightforward, for first timers the seat could be painful in your backside, but in case you persevere it is value is as it is a great work out. Every track is completely different so you've some selection, typically you're in your seat, different occasions you are biking standing up or even doing little jumps. It is simply essential to verify your place is right but that's one thing a teacher will make it easier to with. Plus it is up to you the way a lot resistance you add on so that you do have some control….you possibly can ease up for those who feel you're about to die.
There are numerous components that have contributed to this such as the rise within the number of fast foods joints that contain a variety of saturated fats in the meals, using refined sugar in sodas and different processed meals, eating food with less fiber, genetics, overeating and as people age gradual metabolism. Fish and walnuts are rich in omega-3 fatty acids and have the power to maintain the lungs.
So it was not altogether shocking when Hip Hop was pulled apart by the cops and searched as we stood outside. He was cool as an Arctic night time, like he was used to the routine. But after they left he was pissed off. And all he wanted to talk about was the abuse of police power on our trip toRichmond Virginia. I asked him if he understood that he fit the police profile for a young male felony? He wasn't trying to hear the science I used to be dropping and I quickly fell off to sleep.
Calming greens comprise carotenoids and enhancing that are efficient cancer prevention agents. Natural products excessive in cell reinforcements, for example, blackberries, blueberries, oranges, or melons and mitigating vegetables, for example, carrots, broccoli, peppers, tomatoes, and potatoes is usually a real help in battling joint torment, joint irritation and associated aggravation.


text:
Joining a group
Boardmaker Online groups allow you to share and discuss curriculum, activities, and relevant topics with other members of the Boardmaker community with similar interests. You can browse for groups you want to join.
Select Community > Browse Groups. The Browse Groups page will open. This page lists all the public Boardmaker groups.
Note: A public group is open to all members of the community. A private group is available by invitation only.
Note: District subscription administrators have the option of limiting the group selection to those groups exclusive to their organization.
Use the search box at the top of the page to look for groups using a specific keyword (such as "autism"), or
Use the drop-down list to sort the groups (newest, most activities, most members, most popular, etc.)
Scroll through the groups that are displayed until you find a group that interests you.
Select the group. The group page will open.
The group page lists all of the group's activities (under the Activities tab), members (under the Members tab), and discussions on topics related to the group (under the Discussions tab).
When you find a group you want to join, select Join Group. The group will be added to your My Groups page.


text:
- Author(s): [longfangsong](https://github.com/longfangsong), [MyonKeminta](http://github.com/MyonKeminta)
- Last updated: Oct 13, 2021
- Discussion PR: N/A
- Tracking Issue: https://github.com/pingcap/tidb/issues/24199

## Table of Contents

* [Introduction](#introduction)
* [Motivation or Background](#motivation-or-background)
* [Detailed Design](#detailed-design)
* [Test Design](#test-design)
    * [Functional Tests](#functional-tests)
    * [Scenario Tests](#scenario-tests)
    * [Compatibility Tests](#compatibility-tests)
    * [Benchmark Tests](#benchmark-tests)
* [Impacts & Risks](#impacts--risks)
* [Investigation & Alternatives](#investigation--alternatives)
* [Unresolved Questions](#unresolved-questions)

## Introduction

This document describes the design of the feature Lock View, which provides tools to analyze problems about transaction's lock waiting, lock contentions and deadlocks.

## Motivation or Background

Currently, it's very hard to analyze lock contentions and deadlocks for transactions. One may need to enable general log, try to reproduce the problem, and try to analyze the log to find the cause, which is very difficult and inconvenient. Even if you have the log, many conflict's information contains only a `start_ts`, which won't tell you much useful information (like the SQLs in the transaction) for reproducing the problem. We also found that this way of analyzing is not feasible in some scenarios. It's highly required to provide some better approach to analyze these kinds of problems.

## Detailed Design

Several tables will be provided in `information_schema`. Some tables has both local version (fetches data on the current TiDB node) and global version (fetches data among the whole cluster), and the global version's table name has the `"CLUSTER_"` prefix.

### Table `(CLUSTER_)TIDB_TRX`

| Field      | Type       | Comment |
|------------|------------|---------|
| `TRX_ID`    | `unsigned bigint`   | The transaction ID (aka. start ts) |
| `TRX_STARTED`|`time`| Human readable start time of the transaction |
| `CURRENT_SQL_DIGEST`|`varchar(64)`| The digest of the current executing SQL statement |
| `ALL_SQL_DIGESTS` | `text` | A list of all executed SQL statements' digests |
| `STATE`| `enum('Running', 'Lock waiting', 'Committing', 'RollingBack')`| The state of the transaction |
| `WAITING_START_TIME` | `time` | The elapsed time since the start of the current lock waiting (if any) |
| `SCOPE` | `enum('Global', 'Local')` | The scope of the transaction |
| `ISOLATION_LEVEL` | `enum('REPEATABLE-READ', 'READ-COMMITTED')` | |
| `AUTOCOMMIT` | `bool` |  |
| `SESSION_ID` | `unsigned bigint` | |
| `USER` | `varchar` | |
| `DB` | `varchar` | |
| `SET_COUNT` | `int` | Modified keys of the current transaction |
| `LOCKED_COUNT` | `int` | Locked keys of the current transaction |
| `MEM_BUFFER_KEYS` | `int` | Entries in transaction's membuffer |
| `MEM_BUFFER_BYTES` | `int` | Size occupied by the transaction's membuffer |

* Life span of rows:
    * Create on first writing or locking operation in a transaction
    * Remove after the transaction is done
* Collecting, storing and querying:
    * All these information can be collected on TiDB side. Since the amount of concurrent transactions won't be too large, and it doesn't need to be persisted, so it's ok to implement it as a memory table. For querying among the cluster, just register the table under `infoschema/cluster.go` and write the global table name with the local one.
    * As the simplest way of implementing, most information can be passed with a similar way like `ProcessInfo`, or even directly passed via the `ProcessInfo` struct.
* Permission:
    * `PROCESS` privilege is needed to access the full content of this table. For users without `PROCESS` permission, only transactions started by the current user will be shown, and others will be filtered out, which is similar to the `processlist` table.

### Table `DATA_LOCK_WAITS`

| Field      | Type       | Comment |
|------------|------------|---------|
| `KEY`      | `varchar`  | The key that's being waiting on |
| `TRX_ID`   | `unsigned bigint` | The current transaction that's waiting for the lock |
| `SQL_DIGEST` | `varchar(64)` | The digest of the SQL that's trying to acquire the lock |
| `CURRENT_HOLDING_TRX_ID` | `unsigned bigint` | The transaction that's holding the lock and blocks the current transaction |

* Life span of rows:
    * Created on a lock come into LockManager
    * Removed after a lock leave LockManager
* Collecting, storing and querying:
    * All these will be collected on TiKV LockManager, and will need a new RPC entry for TiDB to query. LockManager won't store the un-hashed key or SQL_DIGEST for now, so we need to modify it.
* The SQL Digest of the transaction that's currently holding the lock may be helpful, but it's hard to implement under the current architecture. So it won't be included in the first version of the feature.
* Permission:
    * `PROCESS` privilege is needed to access this table.

### Table `(CLUSTER_)DEADLOCKS`

| Field      | Type       | Comment |
|------------|------------|---------|
| `DEADLOCK_ID` | `int` | There needs multiple rows to represent information of a single deadlock event. This field is used to distinguish different events. |
| `OCCUR_TIME`  | `time` | The physical time when the deadlock occurs |
| `RETRYABLE` | `bool` | Is the deadlock retryable. TiDB tries to determine if the current statement is (indirectly) waiting for a lock locked by the current statement. |
| `TRY_LOCK_TRX_ID` | `unsigned bigint` | The transaction ID (start ts) of the transaction that's trying to acquire the lock |
| `CURRENT_SQL_DIGEST` | `text` | The SQL that's being blocked |
| `KEY` | `varchar` | The key that's being locked, but locked by another transaction in the deadlock event |
| `ALL_SQL_DIGESTS` | `text` | A list of the digest of SQL statements that the transaction has executed |
| `TRX_HOLDING_LOCK` | `unsigned bigint` | The transaction that's currently holding the lock. There will be another record in the table with the same `DEADLOCK_ID` for that transaction. |

* Life span of rows:
    * Create after TiDB receive a deadlock error
    * FIFO,clean the oldest after buffer is full
* Collecting, storing and querying:
    * All of these information can be collected on TiDB side. It just need to add the information to the table when receives deadlock error from TiKV. The information of other transactions involved in the deadlock circle needed to be fetched from elsewhere (the `CLUSTER_TIDB_TRX` table) when handling the deadlock error.
    * TiKV needs to report more rich information in the deadlock error for collecting.
    * There are two types of deadlock errors internally: retryable or non-retryable. The transaction will internally retry on retryable deadlocks and won't report error to the client. Therefore, the user are typically more interested in the non-retryable deadlocks.
        * Retryable deadlock errors are by default not collected, and can be enabled with configuration.
        * Collecting `CLUSTER_TIDB_TRX` for more rich information for retryable deadlock is possible to make the performance worse. Whether it will be collected for retryable deadlock will be decided after some tests.
* Permission:
  * `PROCESS` privilege is needed to access this table.

### TABLE `(CLUSTER_)TRANSACTION_SUMMARY`

| Field      | Type       | Comment |
|------------|------------|---------|
| `DIGEST` | `varchar(16)` | Digest of a transaction, calculated with `ALL_SQL_DIGEST` |
| `ALL_SQL_DIGEST`  | `text` | A json array which contains all SQLs' digest executed in this kind of transaction |

* Life span of rows:
    * Create after first this kind of transaction ended.
    * LRU,clean the least existed(in `TRANSACTION_ID_DIGEST`, see below) after buffer is full.
* Collecting, storing and querying:
    * All of these information can be collected on TiDB side. It just need to add the information to the table when a transaction ended.
* Permission:
  * `PROCESS` privilege is needed to access this table.

### TABLE `(CLUSTER_)TRANSACTION_ID_DIGEST`

| Field      | Type       | Comment |
|------------|------------|---------|
| `DIGEST` | `varchar(16)` | Digest of a transaction, calculated with `ALL_SQL_DIGEST` |
| `TRX_ID`  | `bigint` | The transaction ID (aka. start ts) |

* Life span of rows:
    * Create after a transaction ended and it meets some certain condition (due to the memory is limited).
    * Currently, the condition is that the transaction executed too slow, which has more chance to be conflict with other transactions.
    * FIFO,clean the oldest after buffer is full.
* Collecting, storing and querying:
    * All of these information can be collected on TiDB side. It just need to add the information to the table when a transaction ended.
* Permission:
  * `PROCESS` privilege is needed to access this table.

### Protocol

To pass necessary information between TiDB and TiKV to make this feature possible, there needs some additional information carried in the protocol defined in kvproto.

deadlockpb:

```diff
  message WaitForEntry {
    ...
+   bytes key = ...;
+   bytes resource_group_tag = ...;
  }

  message DeadlockResponse {
    ...
+   repeated WaitiForEntry wait_chain = ...;
  }
```

kvrpcpb:

```diff
  message Context {
    ...
+   bytes resource_group_tag = ...;
  }

  message Deadlock {
    ...
+   repeated deadlock.WaitForEntry wait_chain = ...;
  }

+ message GetLockWaitInfoRequest {
+     Context context = 1;
+ }
+
+ message GetLockWaitInfoResponse {
+     errorpb.Error region_error = 1;
+     string error = 2;
+     repeated deadlock.WaitForEntry entries = 3;
+ }
```

A field `resource_group_tag` will be added to `Context`. The SQL digest (and maybe more information) will be serialized and carried in this field. This field is expected to be reused by another feature named *Top SQL* which wants to carry SQL digest and plan to most transactional requests.

A new KV RPC `GetLockWait` will be added to allow getting the lock waiting status from TiKV. This is a store-level (instead of region level) request, like `UnsafeDestroyRange`, and those Green GC related RPCs. The request can carry some filtering options to filter out those information the user don't care about. But the current memory table implementation only allow TiDB to scan the whole table and then filter it. This may need further optimization in the future.

The locking key and `resource_group_tag` that comes from the `Context` of the pessimistic lock request is added to the deadlock detect request, and the wait chain is added to the deadlock detect response.

The wait chain will be added to the `Deadlock` error which is returned by the `PessimisticLock` request, so that when deadlock happens, the full wait chain information can be passed to TiDB.

### Configurations

#### TiDB Config File `pessimistic-txn.deadlock-history-capacity`

Specifies how many recent deadlock events each TiDB node should keep.

Dynamically changeable via HTTP API.

Value: 0 to 10000

Default: 10

#### TiDB Config File `pessimistic-txn.deadlock-history-collect-retryable`

Specifies whether to collect retryable deadlock errors to the `(CLUSTER_)DEADLOCKS` table.

Dynamically changeable via HTTP API.

Value: 0 (do not collect) or 1 (collect)

Default: 0

#### TiDB Config File `transaction-summary.transaction-id-digest-capacity`

Specifies how many transaction in `transaction_id_digest` each TiDB node should keep.

Dynamically changeable via HTTP API.

Value: 0 to 100000

Default: 10000

#### TiDB Config File `transaction-summary.transaction-id-digest-min-duration`

Specifies how long a transaction should be executed to make it be recorded in `transaction_id_digest`.

Dynamically changeable via HTTP API.

Value: 0 to 60000

Unit: ms

Default: 1000

#### TiDB Config File `transaction-summary.transaction-summary-capacity`

Specifies how many transaction summary in `transaction_summary` each TiDB node should keep.

Dynamically changeable via HTTP API.

Value: 0 to 5000

Default: 500

## Compatibility

This feature is not expected to be incompatible with other features. During upgrading, when there are different versions of TiDB nodes exists at the same time, it's possible that the `CLUSTER_` prefixed tables may encounter errors. However, since this feature is typically used by user manually, this shouldn't be a severe problem. So we don't need to care much about that.

## Test Design

### Functional Tests

* Querying the tables defined above gives correct result.

### Scenario Tests

* In a scenario where there's lock contention, this feature helps locating the problem.
* In a scenario where some a SQL is blocked by another transaction, this feature helps locating the problem.
* In a scenario where deadlock happens, this feature helps finding how the deadlock is formed.

### Compatibility Tests

- N/A

### Benchmark Tests

* The feature shouldn't cause any obvious performance regression (< 2%) on normal scenarios.
* Accessing these tables shouldn't increase latency of concurrent normal queries.

## Impacts & Risks

* To be investigated

## Investigation & Alternatives

* MySQL provides `data_locks` and `data_lock_waits` tables.
* Oracle provides `v$lock` view.
* CRDB provides `crdb_internal.node_transaction_statistics` that shows rich information for transactions.

## Unresolved Questions

* Since lock waiting on TiKV may timeout and retry, it's possible that in a single query to `DATA_LOCK_WAIT` table doesn't shows all (logical) lock waiting.
* Information about internal transactions may not be collected in our first version of implementation.
* Since TiDB need to query transaction information after it receives the deadlock error, the transactions' status may be changed during that time. As a result the information in `(CLUSTER_)DEADLOCKS` table can't be promised to be accurate and complete.
* Statistics about transaction conflicts is still not enough.
* Historical information of `TIDB_TRX` and `DATA_LOCK_WAITS` is not kept, which possibly makes it still difficult to investigate some kind of problems.


text:
Q: Python: Update dictionary with multiple variables? I've got this code:
    def update_amounts(self):
        container = {}

        a = {'a': self.a_amount} if self.a_mount or self.a_amount is None else {'': ''}
        container.update(a)
        b = {'b': self.b_amount} if self.b_amount or self.b_amount is None else {'':''}
        container.update(b)
        c = {'c': self.c_amount} if self.c_amount or self.c_amount is None else {'':''}
        container.update(c)

        return container

And I wanted to know if its possible to do the dict update more efficient than calling the update function three times?
Thanks in regard!

A: For Python 3.9+, you can use pipe symbol | to combine multiple dictionaries
    def update_amounts(self):
        # container = {}
        a = {'a': self.a_amount} if self.a_mount or self.a_amount is None else {'': ''}
        # container.update(a)
        b = {'b': self.b_amount} if self.b_amount or self.b_amount is None else {'':''}
        # container.update(b)
        c = {'c': self.c_amount} if self.c_amount or self.c_amount is None else {'':''}
        # container.update(c)
        container = a|b|c
        return container

Or, you can just pass the unpacked values for each of the dictionaries to the update method at last:
    def update_amounts(self):
        container = {}
        .
        .
        .
        container.update(**a, **b, **c)
        return container


what does these supps do?
Whats flax seed do? or have in it?
Start PH cycle with Mag-10, finish with?
How should I stack ephedrine HCl, Yohimbe HCl, and caffiene?
Where to purchase Swole V2?
diet, what suppliments should i add, need advice!
Celltech And Twinlab Creatine Fuel?
Will 1 AD get you cut??
o.k to miss breakfast as long as......???
Help To Fight The Ph Ban!
R-ala better then ala? No2 waste?
i need a verdict on ecdysterone from experience!!
The Ultimate Protocol For M1T!!!
Are you natural if you've used PH/s?
Post Andro - 6oxo AND Tribex500?
New Syntrax Swole V2 - My experience..
R-ALA destroyed by open air. NOZ crap?
Supp to keep up strength after getting off creatine?
Should I take Glutamine on my rest days?
Is Dymatize Creatine any good?
AccuFitness, Body Fat Calipers, anygood?
What is slowly working for me might help others.
Is it okay to add Kool Aid to glutamine/creatine?
Any calories in Swole V2 or SAN V12?
100% whey protein before bed?
why does everyone on this forum make ON 100% whey to be the gold standard of protein?
Anyone try the new Dymetadrine?
New THG article on ESPN website-yikes!
Casein ok if Lactose Intolerant?
Using both Nolva and 6oxo?
Does Creatine have an Expire Date?
17 yrs.... Tribulas or ZMA?
taking creating and Whey during cutting phase??
Tell me what you think of my 1AD cycle!
Cycling T3: Is This A Good Way to Do It?
Will I get the same mass gains from Deca, if I take 1-andro and 4-andro?
I need the best creatine. So what is the best?
Let the homebrewing fun begin!
How can I get 4-ad if I live in California?
Is this weird??! (Creatine related) and prohormone ?
VPX Muscle Nitrous Gets An "A+"
Should creatine be taken on rest days?
Best Prices for LMR or VPX products?
Nordiol and 4ad, first cycle coming soon. need advice please.
Anything worthwhile to stack with an ECY?
How long before milk of protein goes bad?
Showering hours after S1+ application?
How do you know if creatine is working?
Good meal replacements in Australia?
Help with my diet / supplementation?