Faits :
A.
A._ a déposé une demande de prestations de l'assurance-invalidité, le 30 juin 2008, invoquant une maladie professionnelle et des douleurs dorsales.
Par décision du 28 mars 2012, l'Office de l'assurance-invalidité pour le canton de Vaud (l'office AI) a nié le droit à la rente.
B.
A._ a déféré cette décision au Tribunal cantonal du canton de Vaud, Cour des assurances sociales, en concluant au versement d'une demi-rente d'invalidité au moins depuis le 11 juin 2009. Il a requis la mise en oeuvre de débats publics.
Par jugement du 21 juillet 2015, la juridiction cantonale a admis partiellement le recours. Elle a réformé la décision administrative du 28 mars 2012 en sens que l'assuré a été mis au bénéfice d'un quart de rente, fondé sur un degré d'invalidité de 43 %, à compter du 1 er novembre 2009. En outre, elle a renvoyé la cause à l'office AI afin qu'il statue sur les conséquences de l'aggravation observée à compter de septembre 2013. Les débats publics demandés n'ont pas été mis en oeuvre.
C.
A._ interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation. A titre principal, il conclut à l'octroi d'une demi-rente d'invalidité au moins depuis le 1 er novembre 2009, puis une rente entière à compter du 1 er octobre 2013. A titre subsidiaire, il conclut au renvoi de la cause aux premiers juges.
L'office intimé conclut implicitement au rejet du recours. La juridiction cantonale s'en réfère à son jugement, sans formuler d'observations. Quant à l'Office fédéral des assurances sociales, il a renoncé à se déterminer.

Considérant en droit :
1.
A l'appui de ses conclusions principales, le recourant reproche aux premiers juges de n'avoir pas étendu le procès au-delà de l'objet de la contestation. Il soutient que la situation postérieure au mois de septembre 2013 est en état d'être jugée, compte tenu des conclusions claires et univoques des experts médicaux de la Clinique B._ figurant dans le rapport du 22 juillet 2014, selon lesquels il n'a plus de capacité de travail dès ce moment-là. Le recourant s'en prend aussi au rapport du docteur C._ du 9 janvier 2012, qui lui semble dénué de force probante. Par ailleurs, il soutient que la jurisprudence récente (cf. <ref-ruling>) sur le caractère invalidant d'un syndrome douloureux somatoforme persistant n'a, à tort, pas été appliquée.
A propos de ses conclusions subsidiaires, le recourant fait grief à la juridiction cantonale d'avoir refusé de mettre en oeuvre des débats publics, en dépit de sa demande expresse, violant ainsi son droit à un procès équitable et son droit d'être entendu (art. 6 CEDH, art. 29 al. 2 Cst.). Il se réfère à cet égard à l'arrêt 9C_198/2011 du 11 novembre 2011 qu'il avait expressément invoqué dans son recours cantonal.
2.
Dans la mesure où le recourant soulève un grief d'ordre formel contre le déroulement de la procédure de première instance, soit la violation de son droit d'être entendu (art. 29 al. 2 Cst.), celui-ci doit être examiné en premier lieu, car il se pourrait que le Tribunal fédéral accueille le recours sur ce point et renvoie la cause à l'autorité inférieure sans examen du litige au fond (cf. <ref-ruling> consid. 2 p. 92 et la référence; arrêt 9C_569/2015 du 8 mars 2016 consid. 3.1).
3.
L'art. 30 al. 3 Cst., selon lequel l'audience et le prononcé du jugement sont publics, ne confère pas au justiciable de droit à une audience publique. Il se limite à garantir qu'une telle audience se déroule publiquement lorsqu'il y a lieu d'en tenir une. Le droit à des débats existe seulement pour les causes qui bénéficient de la protection de l'art. 6 § 1 CEDH, lorsque la procédure applicable le prévoit ou lorsque sa nécessité découle des exigences du droit à la preuve (cf. <ref-ruling> consid. 2 p. 290 ss). L'art. 6 § 1 CEDH garantit notamment à chacun le droit à ce que sa cause soit entendue publiquement. L'obligation d'organiser des débats publics au sens de cette disposition suppose une demande formulée de manière claire et indiscutable. Une requête de preuve (demande tendant à la comparution personnelle, à l'interrogatoire des parties, à l'audition de témoins ou à une inspection locale) ne suffit pas à fonder une telle obligation (cf. <ref-ruling> consid. 2c p. 52 sv. et 3a p. 55). Saisi d'une demande tendant à la mise en oeuvre de débats publics, le juge cantonal doit en principe y donner suite. Il peut cependant s'abstenir dans les cas prévus par l'art. 6 § 1 seconde phrase CEDH, lorsque la demande est abusive (chicanière ou dilatoire), lorsqu'il apparaît clairement que le recours est infondé, irrecevable ou, au contraire, manifestement bien fondé ou lorsque l'objet du litige porte sur des questions hautement techniques (cf. <ref-ruling> consid. 3b p. 55 ss). Le Tribunal fédéral a précisé qu'il ne pouvait être renoncé à des débats publics au motif que la procédure écrite convenait mieux pour discuter de questions d'ordre médical, même si l'objet du litige porte essentiellement sur la confrontation d'avis spécialisés au sujet de l'état de santé et de l'incapacité de travail d'un assuré en matière d'assurance-invalidité (cf. <ref-ruling> consid. 3 p. 283 sv.).
4.
En l'espèce, le tribunal cantonal n'a pas examiné la requête tendant à la mise en oeuvre des débats publics que le recourant avait présentée dans son recours cantonal du 8 mai 2012 (p. 9) et n'a pas donné suite à celle-ci. On se trouve pourtant dans l'éventualité dont il est question à l'arrêt 9C_198/2011 consid. 2.1, dès lors que la présente cause bénéficie de la protection de l'art. 6 § 1 CEDH, que la demande avait été formulée de manière claire et indiscutable et qu'elle ne présentait pas de caractère abusif. Quant au sort du litige, dont l'objet porte essentiellement sur la confrontation d'avis spécialisés au sujet de l'état de santé et de l'incapacité de travail du recourant en matière d'assurance-invalidité, il était indécis, la juridiction cantonale ayant d'ailleurs admis partiellement le recours.
Il s'ensuit que le jugement attaqué sera annulé pour ce seul motif, la cause étant renvoyée aux premiers juges afin qu'ils mettent en oeuvre les débats publics requis et statuent ensuite à nouveau sur le recours formé contre la décision du 28 mars 2012.
5.
Le recourant, qui obtient gain de cause, a droit à une indemnité de dépens à charge de l'intimé (<ref-law>). Il est statué sans frais (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est partiellement admis. Le jugement du Tribunal cantonal du canton de Vaud, Cour des assurances sociales, du 21 juillet 2015, est annulé, la cause lui étant renvoyée pour qu'il procède conformément au considérant 4. Le recours est rejeté pour le surplus.
2.
Il n'est pas perçu de frais judiciaires.
3.
L'intimé versera au recourant la somme de 2'800 fr. à titre de dépens pour la procédure fédérale.
4.
Le présent arrêt est communiqué aux parties, au Tribunal cantonal du canton de Vaud, Cour des assurances sociales, et à l'Office fédéral des assurances sociales.
Lucerne, le 21 juin 2016
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
La Présidente : Glanzmann
Le Greffier : Berthoud