<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="https://reviewboard.asterisk.org/r/3148/">https://reviewboard.asterisk.org/r/3148/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On January 21st, 2014, 7:14 p.m. CST, <b>Paul Belanger</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="https://reviewboard.asterisk.org/r/3148/diff/1/?file=53005#file53005line1" style="color: black; font-weight: bold; text-decoration: underline;">branches/12/contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="sd">"""Add pjsip endpoint options for 12.1</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="sd">"""Add/Update tables for pjsip</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">You should be creating new alembic scripts not modifying committed ones.
This is going to breaks peoples systems that have already invoked the scripts.</pre>
</blockquote>
<p>On January 21st, 2014, 7:38 p.m. CST, <b>Russell Bryant</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">right. each script should stay unmodified. any db schema changes should be a new script, which is a migration from the old schema to the updated one. That way at each release, people can re-run alembic to apply all of the updates since the version of the schema they currently have.</pre>
</blockquote>
<p>On January 22nd, 2014, 9:43 a.m. CST, <b>Kevin Harwell</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Correct and usually we would do just as mentioned. In this case though the modified script has not been released (will be in 12.1). Once released then it will stay unmodified and changes will go into a new script.</pre>
</blockquote>
<p>On January 22nd, 2014, 11:45 a.m. CST, <b>Paul Belanger</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Well, the issue being you break peoples system that run the TIP of /branches/12, which you cannot control who as run the script. So, the ideal way to handle it, is just leave the file as is and run 'alembic revision -m 'enable pjsip debug'. This creates[1] fresh alembic scripts which you can move this code into, then you just build the upgrade / downgrade logic around it.
Once the script has been committed to subversion, you have to assume somebody has run it, modifying it after the fact breaks these systems.
[1] http://alembic.readthedocs.org/en/latest/tutorial.html#running-our-second-migration</pre>
</blockquote>
<p>On January 22nd, 2014, 12:06 p.m. CST, <b>Kevin Harwell</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Agreed, and that is how I originally started out when addressing the addition of the "debug" option and would have done just that except unfortunately the "...options_for_12_1" script would fail as it was. It was trying to add a column to a table that didn't exist. It also had a problem with previously created enums when running against postgres.
Since the script contains bugs it had to be modified and since it hasn't been officially released it made it easier to do so for this case.</pre>
</blockquote>
<p>On January 22nd, 2014, 12:20 p.m. CST, <b>Paul Belanger</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">so, if that is the case, you need to create a branch in alembic[1] to deal with the migration path. If a user had run this migration, and they were at the latest changeset, the instructions would be to downgrade the script, reverting the database change. This gets the users back to a sane configuration.
We can then create a new path upgrade for the database, allow the user to select this new path. More complicated, but doesn't leave people with broken databases.
[1] http://alembic.readthedocs.org/en/latest/tutorial.html#working-with-branches</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I think I might be missing something as I don't quite understand how the branching helps in this situation. Alembic only allows a single migration path. Branching occurs when two or more scripts attempt to work on the same path. Alemic fails to process until the pathing issue is resolved.
In this case there is not a dual path/merge problem, but a problem in the source of the script itself. I agree that we should usually avoid modifying the script, but the case where there is a bug in the script I am not sure there is a good way around it.</pre>
<br />
<p>- Kevin</p>
<br />
<p>On January 21st, 2014, 5:01 p.m. CST, Kevin Harwell wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Asterisk Developers.</div>
<div>By Kevin Harwell.</div>
<p style="color: grey;"><i>Updated Jan. 21, 2014, 5:01 p.m.</i></p>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23038">ASTERISK-23038</a>
</div>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt;">Repository: </b>
Asterisk
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Added a "debug" configuration option for res_pjsip that when set to "yes" enables SIP messages to be logged. It is specified under the "system" type.
Also updated the alembic 12.1 script to include this option as well as a few others that were missing. Also updated the "_adding_extensions" script in order to make the "id" column on the table a primary key because mysql needed it to be as such.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Set the "debug" option in the pjsip.conf file and observed SIP debug messages on the console. Also, tested the modified alembic scripts against postgres and mysql database servers.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>branches/12/res/res_pjsip_logger.c <span style="color: grey">(405906)</span></li>
<li>branches/12/res/res_pjsip/config_system.c <span style="color: grey">(405906)</span></li>
<li>branches/12/res/res_pjsip.c <span style="color: grey">(405906)</span></li>
<li>branches/12/include/asterisk/res_pjsip.h <span style="color: grey">(405906)</span></li>
<li>branches/12/contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py <span style="color: grey">(405906)</span></li>
<li>branches/12/contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py <span style="color: grey">(405906)</span></li>
<li>branches/12/configs/pjsip.conf.sample <span style="color: grey">(405906)</span></li>
</ul>
<p><a href="https://reviewboard.asterisk.org/r/3148/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>